从1.21.4迁移更新到1.21.5版本
改了些细节,如紫水晶剪刀使用动画显示
This commit is contained in:
parent
c3bff64c61
commit
416932bb7a
5
.gitattributes
vendored
Normal file
5
.gitattributes
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
# Disable autocrlf on generated files, they always generate with LF
|
||||
# Add any extra files or paths here to make git stop saying they
|
||||
# are changed when only line endings change.
|
||||
src/generated/**/.cache/cache text eol=lf
|
||||
src/generated/**/*.json text eol=lf
|
||||
25
.github/workflows/build.yml
vendored
Normal file
25
.github/workflows/build.yml
vendored
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
name: Build
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
fetch-tags: true
|
||||
|
||||
- name: Setup JDK 21
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: '21'
|
||||
distribution: 'temurin'
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v4
|
||||
|
||||
- name: Build with Gradle
|
||||
run: ./gradlew build
|
||||
26
.gitignore
vendored
Normal file
26
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
# eclipse
|
||||
bin
|
||||
*.launch
|
||||
.settings
|
||||
.metadata
|
||||
.classpath
|
||||
.project
|
||||
|
||||
# idea
|
||||
out
|
||||
*.ipr
|
||||
*.iws
|
||||
*.iml
|
||||
.idea
|
||||
|
||||
# gradle
|
||||
build
|
||||
.gradle
|
||||
|
||||
# other
|
||||
eclipse
|
||||
run
|
||||
runs
|
||||
run-data
|
||||
|
||||
repo
|
||||
25
README.md
Normal file
25
README.md
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
Installation information
|
||||
=======
|
||||
|
||||
This template repository can be directly cloned to get you started with a new
|
||||
mod. Simply create a new repository cloned from this one, by following the
|
||||
instructions provided by [GitHub](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-repository-from-a-template).
|
||||
|
||||
Once you have your clone, simply open the repository in the IDE of your choice. The usual recommendation for an IDE is either IntelliJ IDEA or Eclipse.
|
||||
|
||||
If at any point you are missing libraries in your IDE, or you've run into problems you can
|
||||
run `gradlew --refresh-dependencies` to refresh the local cache. `gradlew clean` to reset everything
|
||||
{this does not affect your code} and then start the process again.
|
||||
|
||||
Mapping Names:
|
||||
============
|
||||
By default, the MDK is configured to use the official mapping names from Mojang for methods and fields
|
||||
in the Minecraft codebase. These names are covered by a specific license. All modders should be aware of this
|
||||
license. For the latest license text, refer to the mapping file itself, or the reference copy here:
|
||||
https://github.com/NeoForged/NeoForm/blob/main/Mojang.md
|
||||
|
||||
Additional Resources:
|
||||
==========
|
||||
Community Documentation: https://docs.neoforged.net/
|
||||
NeoForged Discord: https://discord.neoforged.net/
|
||||
24
TEMPLATE_LICENSE.txt
Normal file
24
TEMPLATE_LICENSE.txt
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2023 NeoForged project
|
||||
|
||||
This license applies to the template files as supplied by github.com/NeoForged/MDK
|
||||
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
173
build.gradle
Normal file
173
build.gradle
Normal file
|
|
@ -0,0 +1,173 @@
|
|||
plugins {
|
||||
id 'java-library'
|
||||
id 'maven-publish'
|
||||
id 'net.neoforged.gradle.userdev' version '7.0.184'
|
||||
}
|
||||
|
||||
tasks.named('wrapper', Wrapper).configure {
|
||||
// Define wrapper values here so as to not have to always do so when updating gradlew.properties.
|
||||
// Switching this to Wrapper.DistributionType.ALL will download the full gradle sources that comes with
|
||||
// documentation attached on cursor hover of gradle classes and methods. However, this comes with increased
|
||||
// file size for Gradle. If you do switch this to ALL, run the Gradle wrapper task twice afterwards.
|
||||
// (Verify by checking gradle/wrapper/gradle-wrapper.properties to see if distributionUrl now points to `-all`)
|
||||
distributionType = Wrapper.DistributionType.BIN
|
||||
}
|
||||
|
||||
version = mod_version
|
||||
group = mod_group_id
|
||||
|
||||
repositories {
|
||||
mavenLocal()
|
||||
}
|
||||
|
||||
base {
|
||||
archivesName = mod_id
|
||||
}
|
||||
|
||||
// Mojang ships Java 21 to end users starting in 1.20.5, so mods should target Java 21.
|
||||
java.toolchain.languageVersion = JavaLanguageVersion.of(21)
|
||||
|
||||
//minecraft.accessTransformers.file rootProject.file('src/main/resources/META-INF/accesstransformer.cfg')
|
||||
//minecraft.accessTransformers.entry public net.minecraft.client.Minecraft textureManager # textureManager
|
||||
|
||||
// Default run configurations.
|
||||
// These can be tweaked, removed, or duplicated as needed.
|
||||
runs {
|
||||
// applies to all the run configs below
|
||||
configureEach {
|
||||
// Recommended logging data for a userdev environment
|
||||
// The markers can be added/remove as needed separated by commas.
|
||||
// "SCAN": For mods scan.
|
||||
// "REGISTRIES": For firing of registry events.
|
||||
// "REGISTRYDUMP": For getting the contents of all registries.
|
||||
systemProperty 'forge.logging.markers', 'REGISTRIES'
|
||||
|
||||
// Recommended logging level for the console
|
||||
// You can set various levels here.
|
||||
// Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels
|
||||
systemProperty 'forge.logging.console.level', 'debug'
|
||||
|
||||
modSource project.sourceSets.main
|
||||
}
|
||||
|
||||
client {
|
||||
// Comma-separated list of namespaces to load gametests from. Empty = all namespaces.
|
||||
systemProperty 'neoforge.enabledGameTestNamespaces', project.mod_id
|
||||
}
|
||||
|
||||
server {
|
||||
systemProperty 'neoforge.enabledGameTestNamespaces', project.mod_id
|
||||
argument '--nogui'
|
||||
}
|
||||
|
||||
// This run config launches GameTestServer and runs all registered gametests, then exits.
|
||||
// By default, the server will crash when no gametests are provided.
|
||||
// The gametest system is also enabled by default for other run configs under the /test command.
|
||||
gameTestServer {
|
||||
systemProperty 'neoforge.enabledGameTestNamespaces', project.mod_id
|
||||
}
|
||||
|
||||
clientData {
|
||||
// example of overriding the workingDirectory set in configureEach above, uncomment if you want to use it
|
||||
// workingDirectory project.file('run-data')
|
||||
systemProperty('gradle.task', 'runData')
|
||||
// Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources.
|
||||
arguments.addAll '--mod', project.mod_id, '--all', '--output', file('src/generated/resources/').getAbsolutePath(), '--existing', file('src/main/resources/').getAbsolutePath()
|
||||
}
|
||||
}
|
||||
|
||||
// Include resources generated by data generators.
|
||||
sourceSets.main.resources { srcDir 'src/generated/resources' }
|
||||
|
||||
// Sets up a dependency configuration called 'localRuntime'.
|
||||
// This configuration should be used instead of 'runtimeOnly' to declare
|
||||
// a dependency that will be present for runtime testing but that is
|
||||
// "optional", meaning it will not be pulled by dependents of this mod.
|
||||
configurations {
|
||||
runtimeClasspath.extendsFrom localRuntime
|
||||
}
|
||||
minecraft {
|
||||
accessTransformers.file("src/main/resources/META-INF/accesstransformer.cfg")
|
||||
}
|
||||
dependencies {
|
||||
// Specify the version of Minecraft to use.
|
||||
// Depending on the plugin applied there are several options. We will assume you applied the userdev plugin as shown above.
|
||||
// The group for userdev is net.neoforged, the module name is neoforge, and the version is the same as the neoforge version.
|
||||
// You can however also use the vanilla plugin (net.neoforged.gradle.vanilla) to use a version of Minecraft without the neoforge loader.
|
||||
// And its provides the option to then use net.minecraft as the group, and one of; client, server or joined as the module name, plus the game version as version.
|
||||
// For all intends and purposes: You can treat this dependency as if it is a normal library you would use.
|
||||
implementation "net.neoforged:neoforge:${neo_version}"
|
||||
|
||||
// Example optional mod dependency with JEI
|
||||
// The JEI API is declared for compile time use, while the full JEI artifact is used at runtime
|
||||
// compileOnly "mezz.jei:jei-${mc_version}-common-api:${jei_version}"
|
||||
// compileOnly "mezz.jei:jei-${mc_version}-neoforge-api:${jei_version}"
|
||||
// We add the full version to localRuntime, not runtimeOnly, so that we do not publish a dependency on it
|
||||
// localRuntime "mezz.jei:jei-${mc_version}-neoforge:${jei_version}"
|
||||
|
||||
// Example mod dependency using a mod jar from ./libs with a flat dir repository
|
||||
// This maps to ./libs/coolmod-${mc_version}-${coolmod_version}.jar
|
||||
// The group id is ignored when searching -- in this case, it is "blank"
|
||||
// implementation "blank:coolmod-${mc_version}:${coolmod_version}"
|
||||
|
||||
// Example mod dependency using a file as dependency
|
||||
// implementation files("libs/coolmod-${mc_version}-${coolmod_version}.jar")
|
||||
|
||||
// Example project dependency using a sister or child project:
|
||||
// implementation project(":myproject")
|
||||
|
||||
// For more info:
|
||||
// http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
|
||||
// http://www.gradle.org/docs/current/userguide/dependency_management.html
|
||||
}
|
||||
|
||||
// This block of code expands all declared replace properties in the specified resource targets.
|
||||
// A missing property will result in an error. Properties are expanded using ${} Groovy notation.
|
||||
// When "copyIdeResources" is enabled, this will also run before the game launches in IDE environments.
|
||||
// See https://docs.gradle.org/current/dsl/org.gradle.language.jvm.tasks.ProcessResources.html
|
||||
tasks.withType(ProcessResources).configureEach {
|
||||
var replaceProperties = [
|
||||
minecraft_version : minecraft_version,
|
||||
minecraft_version_range: minecraft_version_range,
|
||||
neo_version : neo_version,
|
||||
neo_version_range : neo_version_range,
|
||||
loader_version_range : loader_version_range,
|
||||
mod_id : mod_id,
|
||||
mod_name : mod_name,
|
||||
mod_license : mod_license,
|
||||
mod_version : mod_version,
|
||||
mod_authors : mod_authors,
|
||||
mod_description : mod_description
|
||||
]
|
||||
inputs.properties replaceProperties
|
||||
|
||||
filesMatching(['META-INF/neoforge.mods.toml']) {
|
||||
expand replaceProperties
|
||||
}
|
||||
}
|
||||
|
||||
// Example configuration to allow publishing using the maven-publish plugin
|
||||
publishing {
|
||||
publications {
|
||||
register('mavenJava', MavenPublication) {
|
||||
from components.java
|
||||
}
|
||||
}
|
||||
repositories {
|
||||
maven {
|
||||
url "file://${project.projectDir}/repo"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tasks.withType(JavaCompile).configureEach {
|
||||
options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation
|
||||
}
|
||||
|
||||
// IDEA no longer automatically downloads sources/javadoc jars for dependencies, so we need to explicitly enable the behavior.
|
||||
idea {
|
||||
module {
|
||||
downloadSources = true
|
||||
downloadJavadoc = true
|
||||
}
|
||||
}
|
||||
45
gradle.properties
Normal file
45
gradle.properties
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
# Sets default memory used for gradle commands. Can be overridden by user or command line properties.
|
||||
org.gradle.jvmargs=-Xmx3G
|
||||
org.gradle.daemon=true
|
||||
org.gradle.parallel=true
|
||||
org.gradle.caching=false
|
||||
org.gradle.configuration-cache=false
|
||||
|
||||
#read more on this at https://github.com/neoforged/NeoGradle/blob/NG_7.0/README.md#apply-parchment-mappings
|
||||
# you can also find the latest versions at: https://parchmentmc.org/docs/getting-started
|
||||
neogradle.subsystems.parchment.minecraftVersion=1.21.4
|
||||
neogradle.subsystems.parchment.mappingsVersion=2025.03.23
|
||||
# Environment Properties
|
||||
# You can find the latest versions here: https://projects.neoforged.net/neoforged/neoforge
|
||||
# The Minecraft version must agree with the Neo version to get a valid artifact
|
||||
minecraft_version=1.21.5
|
||||
# The Minecraft version range can use any release version of Minecraft as bounds.
|
||||
# Snapshots, pre-releases, and release candidates are not guaranteed to sort properly
|
||||
# as they do not follow standard versioning conventions.
|
||||
minecraft_version_range=[1.21.5]
|
||||
# The Neo version must agree with the Minecraft version to get a valid artifact
|
||||
neo_version=21.5.30-beta
|
||||
# The Neo version range can use any version of Neo as bounds
|
||||
neo_version_range=[21.5.30-beta,)
|
||||
# The loader version range can only use the major version of FML as bounds
|
||||
loader_version_range=[1,)
|
||||
|
||||
## Mod Properties
|
||||
|
||||
# The unique mod identifier for the mod. Must be lowercase in English locale. Must fit the regex [a-z][a-z0-9_]{1,63}
|
||||
# Must match the String constant located in the main mod class annotated with @Mod.
|
||||
mod_id=leashedplayer
|
||||
# The human-readable display name for the mod.
|
||||
mod_name=Leashed Player
|
||||
# The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default.
|
||||
mod_license=MIT
|
||||
# The mod version. See https://semver.org/
|
||||
mod_version=1.21.5_0.0.4.0.4.0
|
||||
# The group ID for the mod. It is only important when publishing as an artifact to a Maven repository.
|
||||
# This should match the base package used for the mod sources.
|
||||
# See https://maven.apache.org/guides/mini/guide-naming-conventions.html
|
||||
mod_group_id=com.r3944realms.leashedplayer
|
||||
# The authors of the mod. This is a simple text string that is used for display purposes in the mod list.
|
||||
mod_authors=r3944Realms
|
||||
# The description of the mod. This is a simple multiline text string that is used for display purposes in the mod list.
|
||||
mod_description= Player but can be leashed
|
||||
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Normal file
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Normal file
Binary file not shown.
7
gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
7
gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.12-bin.zip
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
252
gradlew
vendored
Normal file
252
gradlew
vendored
Normal file
|
|
@ -0,0 +1,252 @@
|
|||
#!/bin/sh
|
||||
|
||||
#
|
||||
# Copyright © 2015-2021 the original authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
# Gradle start up script for POSIX generated by Gradle.
|
||||
#
|
||||
# Important for running:
|
||||
#
|
||||
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
|
||||
# noncompliant, but you have some other compliant shell such as ksh or
|
||||
# bash, then to run this script, type that shell name before the whole
|
||||
# command line, like:
|
||||
#
|
||||
# ksh Gradle
|
||||
#
|
||||
# Busybox and similar reduced shells will NOT work, because this script
|
||||
# requires all of these POSIX shell features:
|
||||
# * functions;
|
||||
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
|
||||
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
|
||||
# * compound commands having a testable exit status, especially «case»;
|
||||
# * various built-in commands including «command», «set», and «ulimit».
|
||||
#
|
||||
# Important for patching:
|
||||
#
|
||||
# (2) This script targets any POSIX shell, so it avoids extensions provided
|
||||
# by Bash, Ksh, etc; in particular arrays are avoided.
|
||||
#
|
||||
# The "traditional" practice of packing multiple parameters into a
|
||||
# space-separated string is a well documented source of bugs and security
|
||||
# problems, so this is (mostly) avoided, by progressively accumulating
|
||||
# options in "$@", and eventually passing that to Java.
|
||||
#
|
||||
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
|
||||
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
|
||||
# see the in-line comments for details.
|
||||
#
|
||||
# There are tweaks for specific operating systems such as AIX, CygWin,
|
||||
# Darwin, MinGW, and NonStop.
|
||||
#
|
||||
# (3) This script is generated from the Groovy template
|
||||
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||
# within the Gradle project.
|
||||
#
|
||||
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
# Attempt to set APP_HOME
|
||||
|
||||
# Resolve links: $0 may be a link
|
||||
app_path=$0
|
||||
|
||||
# Need this for daisy-chained symlinks.
|
||||
while
|
||||
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
|
||||
[ -h "$app_path" ]
|
||||
do
|
||||
ls=$( ls -ld "$app_path" )
|
||||
link=${ls#*' -> '}
|
||||
case $link in #(
|
||||
/*) app_path=$link ;; #(
|
||||
*) app_path=$APP_HOME$link ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# This is normally unused
|
||||
# shellcheck disable=SC2034
|
||||
APP_BASE_NAME=${0##*/}
|
||||
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
|
||||
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
|
||||
' "$PWD" ) || exit
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD=maximum
|
||||
|
||||
warn () {
|
||||
echo "$*"
|
||||
} >&2
|
||||
|
||||
die () {
|
||||
echo
|
||||
echo "$*"
|
||||
echo
|
||||
exit 1
|
||||
} >&2
|
||||
|
||||
# OS specific support (must be 'true' or 'false').
|
||||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
nonstop=false
|
||||
case "$( uname )" in #(
|
||||
CYGWIN* ) cygwin=true ;; #(
|
||||
Darwin* ) darwin=true ;; #(
|
||||
MSYS* | MINGW* ) msys=true ;; #(
|
||||
NONSTOP* ) nonstop=true ;;
|
||||
esac
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
# IBM's JDK on AIX uses strange locations for the executables
|
||||
JAVACMD=$JAVA_HOME/jre/sh/java
|
||||
else
|
||||
JAVACMD=$JAVA_HOME/bin/java
|
||||
fi
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
else
|
||||
JAVACMD=java
|
||||
if ! command -v java >/dev/null 2>&1
|
||||
then
|
||||
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
||||
case $MAX_FD in #(
|
||||
max*)
|
||||
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
|
||||
# shellcheck disable=SC2039,SC3045
|
||||
MAX_FD=$( ulimit -H -n ) ||
|
||||
warn "Could not query maximum file descriptor limit"
|
||||
esac
|
||||
case $MAX_FD in #(
|
||||
'' | soft) :;; #(
|
||||
*)
|
||||
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
||||
# shellcheck disable=SC2039,SC3045
|
||||
ulimit -n "$MAX_FD" ||
|
||||
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||
esac
|
||||
fi
|
||||
|
||||
# Collect all arguments for the java command, stacking in reverse order:
|
||||
# * args from the command line
|
||||
# * the main class name
|
||||
# * -classpath
|
||||
# * -D...appname settings
|
||||
# * --module-path (only if needed)
|
||||
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
|
||||
|
||||
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||
if "$cygwin" || "$msys" ; then
|
||||
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
|
||||
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
|
||||
|
||||
JAVACMD=$( cygpath --unix "$JAVACMD" )
|
||||
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
for arg do
|
||||
if
|
||||
case $arg in #(
|
||||
-*) false ;; # don't mess with options #(
|
||||
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
|
||||
[ -e "$t" ] ;; #(
|
||||
*) false ;;
|
||||
esac
|
||||
then
|
||||
arg=$( cygpath --path --ignore --mixed "$arg" )
|
||||
fi
|
||||
# Roll the args list around exactly as many times as the number of
|
||||
# args, so each arg winds up back in the position where it started, but
|
||||
# possibly modified.
|
||||
#
|
||||
# NB: a `for` loop captures its iteration list before it begins, so
|
||||
# changing the positional parameters here affects neither the number of
|
||||
# iterations, nor the values presented in `arg`.
|
||||
shift # remove old arg
|
||||
set -- "$@" "$arg" # push replacement arg
|
||||
done
|
||||
fi
|
||||
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
|
||||
# Collect all arguments for the java command:
|
||||
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
|
||||
# and any embedded shellness will be escaped.
|
||||
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
|
||||
# treated as '${Hostname}' itself on the command line.
|
||||
|
||||
set -- \
|
||||
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||
-classpath "$CLASSPATH" \
|
||||
org.gradle.wrapper.GradleWrapperMain \
|
||||
"$@"
|
||||
|
||||
# Stop when "xargs" is not available.
|
||||
if ! command -v xargs >/dev/null 2>&1
|
||||
then
|
||||
die "xargs is not available"
|
||||
fi
|
||||
|
||||
# Use "xargs" to parse quoted args.
|
||||
#
|
||||
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
|
||||
#
|
||||
# In Bash we could simply go:
|
||||
#
|
||||
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
|
||||
# set -- "${ARGS[@]}" "$@"
|
||||
#
|
||||
# but POSIX shell has neither arrays nor command substitution, so instead we
|
||||
# post-process each arg (as a line of input to sed) to backslash-escape any
|
||||
# character that might be a shell metacharacter, then use eval to reverse
|
||||
# that process (while maintaining the separation between arguments), and wrap
|
||||
# the whole thing up as a single "set" statement.
|
||||
#
|
||||
# This will of course break if any of these variables contains a newline or
|
||||
# an unmatched quote.
|
||||
#
|
||||
|
||||
eval "set -- $(
|
||||
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
|
||||
xargs -n1 |
|
||||
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
|
||||
tr '\n' ' '
|
||||
)" '"$@"'
|
||||
|
||||
exec "$JAVACMD" "$@"
|
||||
94
gradlew.bat
vendored
Normal file
94
gradlew.bat
vendored
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
@rem
|
||||
@rem Copyright 2015 the original author or authors.
|
||||
@rem
|
||||
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@rem you may not use this file except in compliance with the License.
|
||||
@rem You may obtain a copy of the License at
|
||||
@rem
|
||||
@rem https://www.apache.org/licenses/LICENSE-2.0
|
||||
@rem
|
||||
@rem Unless required by applicable law or agreed to in writing, software
|
||||
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
@rem See the License for the specific language governing permissions and
|
||||
@rem limitations under the License.
|
||||
@rem
|
||||
@rem SPDX-License-Identifier: Apache-2.0
|
||||
@rem
|
||||
|
||||
@if "%DEBUG%"=="" @echo off
|
||||
@rem ##########################################################################
|
||||
@rem
|
||||
@rem Gradle startup script for Windows
|
||||
@rem
|
||||
@rem ##########################################################################
|
||||
|
||||
@rem Set local scope for the variables with windows NT shell
|
||||
if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%"=="" set DIRNAME=.
|
||||
@rem This is normally unused
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
||||
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
||||
|
||||
@rem Find java.exe
|
||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if %ERRORLEVEL% equ 0 goto execute
|
||||
|
||||
echo. 1>&2
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
|
||||
echo. 1>&2
|
||||
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
||||
echo location of your Java installation. 1>&2
|
||||
|
||||
goto fail
|
||||
|
||||
:findJavaFromJavaHome
|
||||
set JAVA_HOME=%JAVA_HOME:"=%
|
||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||
|
||||
if exist "%JAVA_EXE%" goto execute
|
||||
|
||||
echo. 1>&2
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
|
||||
echo. 1>&2
|
||||
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
||||
echo location of your Java installation. 1>&2
|
||||
|
||||
goto fail
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
if %ERRORLEVEL% equ 0 goto mainEnd
|
||||
|
||||
:fail
|
||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||
rem the _cmd.exe /c_ return code!
|
||||
set EXIT_CODE=%ERRORLEVEL%
|
||||
if %EXIT_CODE% equ 0 set EXIT_CODE=1
|
||||
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
|
||||
exit /b %EXIT_CODE%
|
||||
|
||||
:mainEnd
|
||||
if "%OS%"=="Windows_NT" endlocal
|
||||
|
||||
:omega
|
||||
11
settings.gradle
Normal file
11
settings.gradle
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
pluginManagement {
|
||||
repositories {
|
||||
mavenLocal()
|
||||
gradlePluginPortal()
|
||||
maven { url = 'https://maven.neoforged.net/releases' }
|
||||
}
|
||||
}
|
||||
|
||||
plugins {
|
||||
id 'org.gradle.toolchains.foojay-resolver-convention' version '0.9.0'
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
// 1.21.5 2025-03-29T16:40:03.0405054 Registries
|
||||
f2536789df7f06362718a59ba4a96890e2f9b8aa data/leashedplayer/jukebox_song/what_does_the_fox_say.json
|
||||
84106976f4f71012fc5bd1784303a0d135623c77 data/leashedplayer/painting_variant/group_photo.json
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
// 1.21.5 2025-03-29T16:40:02.9875592 Tags for minecraft:item mod id leashedplayer
|
||||
84707301f1fe2490a899deb51302d413cfff5a89 data/c/tags/item/tools/shear.json
|
||||
bde6ca31173d1f22d5f6fe355dc90c9faa35b239 data/minecraft/tags/item/amethyst_tool_materials.json
|
||||
63e4ad58dc8397171f84264d53dfe4fb503c7b1e data/minecraft/tags/item/arrows.json
|
||||
84707301f1fe2490a899deb51302d413cfff5a89 data/minecraft/tags/item/enchantable/durability.json
|
||||
84707301f1fe2490a899deb51302d413cfff5a89 data/minecraft/tags/item/enchantable/mining.json
|
||||
84707301f1fe2490a899deb51302d413cfff5a89 data/minecraft/tags/item/enchantable/vanishing.json
|
||||
5cf114c796db4c2235df11ee7f656bba09d72a7a data/minecraft/tags/item/head_armor.json
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
// 1.21.5 2025-03-29T16:40:03.0435015 Languages: en_us for mod: leashedplayer
|
||||
2c7f061dfc276db13135adce15c68cfc145ccf37 assets/leashedplayer/lang/en_us.json
|
||||
|
|
@ -0,0 +1 @@
|
|||
// 1.21.5 2025-03-29T16:40:03.0112992 Tags for minecraft:block mod id leashedplayer
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
// 1.21.5 2025-03-29T16:40:03.0510463 Sound Definitions
|
||||
81f1cc9f404c2670bf7cc679107177ffb0b48c77 assets/leashedplayer/sounds.json
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
// 1.21.5 2025-03-29T16:40:03.0163693 Tags for minecraft:painting_variant mod id leashedplayer
|
||||
e081a053d7c2f2d3238cf38436185ef23d234505 data/minecraft/tags/painting_variant/placeable.json
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
// 1.21.5 2025-03-29T16:40:02.9987109 Languages: lzh for mod: leashedplayer
|
||||
7536eb6d1c69695c06ebb9da5b57a391174b02cb assets/leashedplayer/lang/lzh.json
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
// 1.21.5 2025-03-29T16:40:03.0306291 Languages: zh_cn for mod: leashedplayer
|
||||
f7bcf89907a8ca5f575e4b519d53cd0628bb1e6b assets/leashedplayer/lang/zh_cn.json
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
// 1.21.5 2025-03-29T16:40:03.0040344 LeashedPlayer Recipes
|
||||
13ebe9a580731296eb10c05d1844657d58e07cc1 data/leashedplayer/advancement/recipes/misc/amethyst_shears.json
|
||||
1b45d1ad8dc73f1787c97777ad13d9771c9e0ad1 data/leashedplayer/advancement/recipes/misc/leash_rope_arrow.json
|
||||
a26d63c2360b32df0b636a5dec96dd919139e022 data/leashedplayer/advancement/recipes/misc/spectral_leash_rope_arrow.json
|
||||
af1f65626735f1001426e0984217139e15649725 data/leashedplayer/recipe/amethyst_shears.json
|
||||
db45be6e2bbddc49e60a6c1b12e2ef44afad30d8 data/leashedplayer/recipe/leash_rope_arrow.json
|
||||
db37bd69a700eaae69bff48c77ed49ca55fb9bf1 data/leashedplayer/recipe/spectral_leash_rope_arrow.json
|
||||
935d8732ca65dd73e4668a197cda60480053fbcd data/minecraft/advancement/recipes/misc/leash_rope_arrow_shape.json
|
||||
5811048f18527a45b36b8b927de4e5d7c12a75eb data/minecraft/recipe/leash_rope_arrow_shape.json
|
||||
4dffdb7a2a537b409d1ec2630d9b74300649e1d8 data/minecraft/recipe/tipped_leash_rope_arrow_a.json
|
||||
7810cb5e8c165f479fc6cd030bd1cf7bc508993b data/minecraft/recipe/tipped_leash_rope_arrow_b.json
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
// 1.21.5 2025-03-29T16:40:03.0481 Model Definitions - leashedplayer
|
||||
d213db38f45b911f2023c83e15b018371a630ae0 assets/leashedplayer/items/amethyst_shears.json
|
||||
bc53c9feb22db83882974d60456bef0d3ef3ef5e assets/leashedplayer/items/fabric.json
|
||||
e4e426067245e93d282a3d953c420fca04c23f3d assets/leashedplayer/items/leash_rope_arrow.json
|
||||
6151e1b11ec884d511b2fd595e39c9f12674e824 assets/leashedplayer/items/spectral_leash_rope_arrow.json
|
||||
1b914911c9077563701e9ac4b7f8c425f6eff4ee assets/leashedplayer/items/tipped_leash_rope_arrow.json
|
||||
766c487fbf0c59e9045eeaf81daf583eb679b0e1 assets/leashedplayer/models/item/amethyst_shears.json
|
||||
5846df9d85726428905701120ef34c9324c20faf assets/leashedplayer/models/item/bow_lra_pulling_0.json
|
||||
845a7316b86e26f88c6932d4ef2656126503727a assets/leashedplayer/models/item/bow_lra_pulling_1.json
|
||||
5bd1f9f28b91005c587f1c38fb77cd19b59495e3 assets/leashedplayer/models/item/bow_lra_pulling_2.json
|
||||
83946f4d60d0fb1758d6553c36330506c8e48ada assets/leashedplayer/models/item/crossbow_leash_rope_arrow.json
|
||||
bb0d76077719c83c8a8bd4346a24ea1766175125 assets/leashedplayer/models/item/fabric.json
|
||||
114d3cc5832ef047403114504483c6f3ea07e77c assets/leashedplayer/models/item/leash_rope_arrow.json
|
||||
c4748995a5fe190d20e3bd16f4b2244164ec0f83 assets/leashedplayer/models/item/spectral_leash_rope_arrow.json
|
||||
ba065b1a88d82f95e10d026bf7bfdac7923de24c assets/leashedplayer/models/item/tipped_leash_rope_arrow.json
|
||||
fe3d4b8fd83f9ba4e2a951ec2e23ea98a347c2cc assets/minecraft/items/bow.json
|
||||
12be767d961ae273ae0968ad06f022b57afbb0b0 assets/minecraft/items/crossbow.json
|
||||
08270cb07bcffbeedc5c5eeb4904c4f852a8741b assets/minecraft/models/item/bow_pulling_0.json
|
||||
ceb850b6b4a0650ee3d1529e67ab8e7447b0319f assets/minecraft/models/item/bow_pulling_1.json
|
||||
65c4490152c9f65bc766d686b38fffdfeb7a0873 assets/minecraft/models/item/bow_pulling_2.json
|
||||
3f5af50f9ebf07f64949415b4d3a3b6ec549f93b assets/minecraft/models/item/crossbow_arrow.json
|
||||
b98e781a6782a959e897e7db93ef9e9bed6ee72f assets/minecraft/models/item/crossbow_firework.json
|
||||
967e2cb3fce436263b91050e448394e460d1596d assets/minecraft/models/item/crossbow_pulling_0.json
|
||||
1b3d6214059e250dda7aba60632cdc5a315a6146 assets/minecraft/models/item/crossbow_pulling_1.json
|
||||
98bcc5449dcc6b30ae1e0558906c2b3ce5d32da0 assets/minecraft/models/item/crossbow_pulling_2.json
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
// 1.21.5 2025-03-30T19:34:30.4253532 Advancements
|
||||
4d97adba079f1966090a52443bb439319f550680 data/leashedplayer/advancement/advancement_leash_arrow.json
|
||||
f16184b81ea35a0fbd8f2c49b085a96c32818c69 data/leashedplayer/advancement/dog_running_player.json
|
||||
bce12ed339b3b0fded263ba039f7a4e6fcfb84ca data/leashedplayer/advancement/follow_arrow.json
|
||||
29911bbed5a1b7ede2b08d82e6716cd9463bc061 data/leashedplayer/advancement/leashed_friend.json
|
||||
25f6b476b194a27c0fe0e75d74ac3a7ff4054789 data/leashedplayer/advancement/leashed_self.json
|
||||
a69a455855fb6dd8a8ac131a55099de5de45d7c4 data/leashedplayer/advancement/leash_arrow.json
|
||||
d109d59adbfa6efdefb4003623c9fb4950f2956b data/leashedplayer/advancement/leash_start.json
|
||||
2d8bce7fd078f9cc6b73b77f2fbab30e6cc197f4 data/leashedplayer/advancement/leash_terminator.json
|
||||
4e567c22e18462ad367fe1817140d1ffa13a6294 data/leashedplayer/advancement/neo_fox.json
|
||||
4b0bcf6b372f52e954edcef37a6b04435ec2b4e8 data/leashedplayer/advancement/no_leash.json
|
||||
72f40eb5816d1e8c296bdf4df6b599c15ba7e7e9 data/leashedplayer/advancement/tipped_leash_arrow.json
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
// 1.21.5 2025-03-29T16:40:03.0241113 Languages: zh_tw for mod: leashedplayer
|
||||
c23825af72a73bc54b72ad3817acb5a03d299375 assets/leashedplayer/lang/zh_tw.json
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "leashedplayer:item/amethyst_shears"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "leashedplayer:item/fabric"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "leashedplayer:item/leash_rope_arrow"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "leashedplayer:item/spectral_leash_rope_arrow"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "leashedplayer:item/tipped_leash_rope_arrow",
|
||||
"tints": [
|
||||
{
|
||||
"type": "minecraft:potion",
|
||||
"default": -13083194
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
88
src/generated/resources/assets/leashedplayer/lang/en_us.json
Normal file
88
src/generated/resources/assets/leashedplayer/lang/en_us.json
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
{
|
||||
"advancement.leashedplayer.advancement_leash_arrow": "More advanced flash arrow with a Tether?",
|
||||
"advancement.leashedplayer.advancement_leash_arrow.desc": "Well, apart from glowing, there doesn't seem to be any other difference",
|
||||
"advancement.leashedplayer.dog_running_player": "It's Walking human time.",
|
||||
"advancement.leashedplayer.dog_running_player.desc": "In the park where dogs are not allowed to be walked, the dog decided to walk the human instead",
|
||||
"advancement.leashedplayer.follow_arrow": "Launch!!!",
|
||||
"advancement.leashedplayer.follow_arrow.desc": "Mc, what are you talking about in physics?",
|
||||
"advancement.leashedplayer.leash_arrow": "Arrow with a Tether?",
|
||||
"advancement.leashedplayer.leash_arrow.desc": "Maybe you can using it to shoot some mob?",
|
||||
"advancement.leashedplayer.leash_start": "The Power of Traction",
|
||||
"advancement.leashedplayer.leash_start.desc": "Journey to becoming a Leash Expert",
|
||||
"advancement.leashedplayer.leash_terminator": "The Lead Terminator",
|
||||
"advancement.leashedplayer.leash_terminator.desc": "I am Lead Terminator!",
|
||||
"advancement.leashedplayer.leashed_friend": "Be bound by Rope",
|
||||
"advancement.leashedplayer.leashed_friend.desc": "Be Bond by player with lead",
|
||||
"advancement.leashedplayer.leashed_self": "Stable Connection",
|
||||
"advancement.leashedplayer.leashed_self.desc": "“Restrain oneself with a rope",
|
||||
"advancement.leashedplayer.neo_fox": "NEOFORGE!",
|
||||
"advancement.leashedplayer.neo_fox.desc": "It seems can be equipped.",
|
||||
"advancement.leashedplayer.no_leash": "Don't tie me up",
|
||||
"advancement.leashedplayer.no_leash.desc": "You cannot be leashed by ANY",
|
||||
"advancement.leashedplayer.tipped_leash_arrow": "God said there should be more arrows",
|
||||
"advancement.leashedplayer.tipped_leash_arrow.desc": "A dazzling array of Leash Rope arrows",
|
||||
"creativetab.leashedplayer.leashedplayer_tab": "Leashed Player",
|
||||
"effect.leashedplayer.no_leash": "No Leash",
|
||||
"entity.leashedplayer.kid_player": "Kid",
|
||||
"entity.leashedplayer.leash_rope_arrow": "Leash Rope Arrow",
|
||||
"entity.leashedplayer.nestle_rope_arrow": "Nestle Rope Arrow",
|
||||
"entity.leashedplayer.spectral_leash_rope_arrow": "Spectral Leash Rope Arrow",
|
||||
"gamerule.LP.CreateLeashFenceKnotEntityIfAbsent": "Create Leash Fence Knot Entity if absent",
|
||||
"gamerule.LP.CreateLeashFenceKnotEntityIfAbsent.description": "Create LeashKnot Entity if it's absent on fence",
|
||||
"gamerule.LP.KeepLeashNotDropTime": "Keep leash alive Time",
|
||||
"gamerule.LP.KeepLeashNotDropTime.description": "The time of Keep new leash which has far distance alive (Tick)",
|
||||
"gamerule.LP.TeleportWithLeashedPlayers": "Teleport leashed player with player holder",
|
||||
"gamerule.LP.TeleportWithLeashedPlayers.description": "Holder will teleport with their leashed players ",
|
||||
"item.leash_rope_arrow.desc.1": "§7This arrow will carry the owner along with its flight:",
|
||||
"item.leash_rope_arrow.desc.2": "§c1.§r If it hits a fence or an entity, it will leash the owner to it and drop as a normal arrow.",
|
||||
"item.leash_rope_arrow.desc.3": "§c2.§r Crouching near the arrow allows for faster retrieval. If the arrow's owner is not the player, the owner will be leashed to the player who picks it up.",
|
||||
"item.leash_rope_arrow.desc.4": "§c3.§r When fired from its launcher, the first entity hit will become the arrow's owner and will fly along with it.",
|
||||
"item.leash_rope_arrow.desc.5": "§c4.§r Under the §c§l\"no_leash\"§r effect, the behavior of the arrow when fired will follow the launcher’s behavior.",
|
||||
"item.leash_rope_arrow.description": "Arrows with ropes attached?",
|
||||
"item.leashedplayer.amethyst_shears": "Amethyst Shears",
|
||||
"item.leashedplayer.fabric": "Fabric",
|
||||
"item.leashedplayer.leash_rope_arrow": "Leash Rope Arrow",
|
||||
"item.leashedplayer.neoforge": "NeoForge",
|
||||
"item.leashedplayer.spectral_leash_rope_arrow": "Spectral Leash Rope Arrow",
|
||||
"item.minecraft.lingering_potion.effect.no_leash": "Splash No Leash Potion",
|
||||
"item.minecraft.potion.effect.no_leash": "No Leash Potion",
|
||||
"item.minecraft.splash_potion.effect.no_leash": "Splash No Leash Potion",
|
||||
"item.minecraft.tipped_arrow.effect.no_leash": "Arrow of No Leash",
|
||||
"item.spectral_leash_rope_arrow.desc": "§c2.§r Strike the entity to give it a §e§lGlowing§r effect.",
|
||||
"item.tipped_leash_rope_arrow.desc": "§c2.§rStrike the entity to give it a Potion effect.",
|
||||
"item.tipped_leash_rope_arrow.name": "Tipped Leash Rope Arrow Soaked By %1$s",
|
||||
"item.variant.leash_rope_arrow.desc.1": "§7A variant of Leash Rope Arrow",
|
||||
"item.variant.leash_rope_arrow.desc.2": "§c1.§r The function is the same as its original one。",
|
||||
"jukebox_song.leashedplayer.what_does_the_fox_say": "What does the fox say?",
|
||||
"key.leashedplayer.category": "Leashed Player",
|
||||
"key.leashedplayer.leash_length.add": "Increase the Length of Leash Rope",
|
||||
"key.leashedplayer.leash_length.not_support_to_not_player_entity": "Only work on Players",
|
||||
"key.leashedplayer.leash_length.sub": "Decrease the Length of Leash Rope",
|
||||
"leashedplayer.command.leash.message.leash.data.clear": "%1$s's LeashData(LeashHolderEntity: %2$s) now is clear",
|
||||
"leashedplayer.command.leash.message.leash.data.clear.leash.clear.failed.no_data": "%1$s has no LeashData can be clear",
|
||||
"leashedplayer.command.leash.message.leash.data.null": "%1$s has no LeashDataEntity",
|
||||
"leashedplayer.command.leash.message.leash.data.set": "%1$s LeashDataEntity now is set as %2$s",
|
||||
"leashedplayer.command.leash.message.leash.data.set.failed.diff_level": "%1$s and %2$s are not at a same level",
|
||||
"leashedplayer.command.leash.message.leash.data.set.failed.forbid_same_entity": "Prohibit setting the same entity",
|
||||
"leashedplayer.command.leash.message.leash.data.set.failed.no_knot_exist_in_that_pos": "No knot found at (X:%f,Y:%f,Z:%f)",
|
||||
"leashedplayer.command.leash.message.leash.data.set.failed.too_far": "The distance between %1$s and %2$s is larger than the 1.2 times of LeashLength, LeashLength is %3$s blocks",
|
||||
"leashedplayer.command.leash.message.leash.data.show": "%1$s's LeashDataEntity is %2$s",
|
||||
"leashedplayer.command.leash.message.leash.length.failed": "Failed (Internal Error, maybe your command is incorrect)",
|
||||
"leashedplayer.command.leash.message.leash.length.set": "The Leash length of %1$s is set to %2$s blocks",
|
||||
"leashedplayer.command.leash.message.leash.length.show": "The Leash Length of %1$s is %2$s blocks",
|
||||
"leashedplayer.command.motion.message.adder.successful": "§bAdd Successfully.§a%s§7:§f[§eVec§7: §a(§f%f§7,§f%f§7,§f%f§a)§f]§r",
|
||||
"leashedplayer.command.motion.message.multiply.successful": "§bMultiply Successfully.§a%s§7:§f[§eVec§7: §a(§f%f§7,§f%f§7,§f%f§a)§f]§r",
|
||||
"leashedplayer.command.motion.message.setter.successful": "§bSet Successfully.§a%s§7:§f[§eVec§7: §a(§f%f§7,§f%f§7,§f%f§a)§f]§r",
|
||||
"leashedplayer.lead_breaker.item.desc": "§7can break the link of leash",
|
||||
"leashedplayer.lead_breaker.item.use_fai": "§cFailed to break §f%1$s§c 's Leashed Link to §f%2$s",
|
||||
"leashedplayer.lead_breaker.item.use_suf": "§aSuccessfully break §f%1$s§a 's Leashed Link to §f%2$s ",
|
||||
"leashedplayer.leash_rope.length.decrease": "§Decrease the §f%s §cLength of Leash Rope§7(§bLength§7:§e%d§7)",
|
||||
"leashedplayer.leash_rope.length.decrease.self": "§cDecrease the Length of Leash Rope§7(§bLength§7:§e%d§7)",
|
||||
"leashedplayer.leash_rope.length.failed": "§cFailed",
|
||||
"leashedplayer.leash_rope.length.increase": "§aIncrease the §f%s §aLength of Leash Rope§7(§bLength§7:§e%d§7)",
|
||||
"leashedplayer.leash_rope.length.increase.self": "§aIncrease the Length of Leash Rope§7(§bLength§7:§e%d§7)",
|
||||
"leashedplayer.leash_rope_arrow.try_to_pickup.push_shift_tip": "§aPush §f§lShift§a to pick up quickly",
|
||||
"painting.leashedplayer.group_photo.author": "§9Leisure §4Time §eDock§r",
|
||||
"painting.leashedplayer.group_photo.title": "§dGroup Photo §7[§6memorable§7]§r",
|
||||
"sound.leashedplayer.subtitle.what_does_the_fox_say": "Great Chu will rise again! Chen She will be king!"
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"entity.leashedplayer.kid_player": "幼"
|
||||
}
|
||||
88
src/generated/resources/assets/leashedplayer/lang/zh_cn.json
Normal file
88
src/generated/resources/assets/leashedplayer/lang/zh_cn.json
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
{
|
||||
"advancement.leashedplayer.advancement_leash_arrow": "更闪亮的拴绳箭?",
|
||||
"advancement.leashedplayer.advancement_leash_arrow.desc": "嗯,除了发光,似乎没有什么其它不同了",
|
||||
"advancement.leashedplayer.dog_running_player": "遛“人”时间",
|
||||
"advancement.leashedplayer.dog_running_player.desc": "公园不能遛狗,于是狗站起来遛人",
|
||||
"advancement.leashedplayer.follow_arrow": "启航!!!",
|
||||
"advancement.leashedplayer.follow_arrow.desc": "抱歉,我的世界不存在物理学",
|
||||
"advancement.leashedplayer.leash_arrow": "拴绳之箭?",
|
||||
"advancement.leashedplayer.leash_arrow.desc": "也许可以用它来发射生物?",
|
||||
"advancement.leashedplayer.leash_start": "牵引之力",
|
||||
"advancement.leashedplayer.leash_start.desc": "拴绳大师之路",
|
||||
"advancement.leashedplayer.leash_terminator": "拴绳终结者",
|
||||
"advancement.leashedplayer.leash_terminator.desc": "我來终结拴绳者!",
|
||||
"advancement.leashedplayer.leashed_friend": "拴绳链接",
|
||||
"advancement.leashedplayer.leashed_friend.desc": "被玩家用拴绳链接",
|
||||
"advancement.leashedplayer.leashed_self": "稳固联结",
|
||||
"advancement.leashedplayer.leashed_self.desc": "用拴绳拴住自己",
|
||||
"advancement.leashedplayer.neo_fox": "NEOFORGE!",
|
||||
"advancement.leashedplayer.neo_fox.desc": "似乎可以戴头上",
|
||||
"advancement.leashedplayer.no_leash": "勿拴我",
|
||||
"advancement.leashedplayer.no_leash.desc": "你不会被任何东西拴住",
|
||||
"advancement.leashedplayer.tipped_leash_arrow": "神说要有更多箭矢",
|
||||
"advancement.leashedplayer.tipped_leash_arrow.desc": "真是琳琅满目啊",
|
||||
"creativetab.leashedplayer.leashedplayer_tab": "可拴玩家",
|
||||
"effect.leashedplayer.no_leash": "禁拴",
|
||||
"entity.leashedplayer.kid_player": "小孩",
|
||||
"entity.leashedplayer.leash_rope_arrow": "拴绳箭",
|
||||
"entity.leashedplayer.nestle_rope_arrow": "贴贴拴绳箭",
|
||||
"entity.leashedplayer.spectral_leash_rope_arrow": "拴绳光灵箭",
|
||||
"gamerule.LP.CreateLeashFenceKnotEntityIfAbsent": "如果缺失则创建拴绳结",
|
||||
"gamerule.LP.CreateLeashFenceKnotEntityIfAbsent.description": "如果在栅栏处缺失拴绳结,则创建它",
|
||||
"gamerule.LP.KeepLeashNotDropTime": "保持拴绳不掉落的时间",
|
||||
"gamerule.LP.KeepLeashNotDropTime.description": "当距离过远时,保持新建拴绳不掉落的时间 (刻)",
|
||||
"gamerule.LP.TeleportWithLeashedPlayers": "被拴玩家随玩家持有者传送",
|
||||
"gamerule.LP.TeleportWithLeashedPlayers.description": "传送时将被拴玩家与持有者一起传送",
|
||||
"item.leash_rope_arrow.desc.1": "§7该箭将会携带拥有者随其飞行",
|
||||
"item.leash_rope_arrow.desc.2": "§c1.§r 若击中栅栏或生物时,将持有者拴在其上并已普通箭形式掉落;",
|
||||
"item.leash_rope_arrow.desc.3": "§c2.§r 靠近该箭下蹲可以更快拾取该箭,如果该箭持有者不是自己,则持有者将被拾取者拴住;",
|
||||
"item.leash_rope_arrow.desc.4": "§c3.§r 当前其发射器里发射,第一个射中的生物将成为此箭的持有者并随箭飞行;",
|
||||
"item.leash_rope_arrow.desc.5": "§c4.§r 在§c§l禁拴§7(§c§lno_leash§7)§r效果下,射出的箭行为同发射器。",
|
||||
"item.leash_rope_arrow.description": "带有拴绳的箭矢?",
|
||||
"item.leashedplayer.amethyst_shears": "紫水晶剪刀",
|
||||
"item.leashedplayer.fabric": "Fabric",
|
||||
"item.leashedplayer.leash_rope_arrow": "拴绳箭",
|
||||
"item.leashedplayer.neoforge": "NeoForge",
|
||||
"item.leashedplayer.spectral_leash_rope_arrow": "拴绳光灵箭",
|
||||
"item.minecraft.lingering_potion.effect.no_leash": "滞留型禁拴药水",
|
||||
"item.minecraft.potion.effect.no_leash": "禁拴药水",
|
||||
"item.minecraft.splash_potion.effect.no_leash": "喷溅型禁拴药水",
|
||||
"item.minecraft.tipped_arrow.effect.no_leash": "禁拴之箭",
|
||||
"item.spectral_leash_rope_arrow.desc": "§c2.§r 击中实体给与其§e§l发光§7(§e§lGlowing§7)§r效果",
|
||||
"item.tipped_leash_rope_arrow.desc": "§c2.§r 击中实体给与其药水效果",
|
||||
"item.tipped_leash_rope_arrow.name": "用%1$s浸泡过的拴绳箭",
|
||||
"item.variant.leash_rope_arrow.desc.1": "§7拴绳箭的一个变种",
|
||||
"item.variant.leash_rope_arrow.desc.2": "§c1.§r 功能同其本体;",
|
||||
"jukebox_song.leashedplayer.what_does_the_fox_say": "狐狸是怎么叫的?",
|
||||
"key.leashedplayer.category": "可拴玩家",
|
||||
"key.leashedplayer.leash_length.add": "增加拴绳长度",
|
||||
"key.leashedplayer.leash_length.not_support_to_not_player_entity": "只在玩家身上有效",
|
||||
"key.leashedplayer.leash_length.sub": "减小拴绳长度",
|
||||
"leashedplayer.command.leash.message.leash.data.clear": "%1$s的拴绳数据(拴绳持有者实体:%2$s)现在已清除",
|
||||
"leashedplayer.command.leash.message.leash.data.clear.leash.clear.failed.no_data": "%1$s沒有拴绳数据可清除",
|
||||
"leashedplayer.command.leash.message.leash.data.null": "%1$s沒有拴绳数据实体",
|
||||
"leashedplayer.command.leash.message.leash.data.set": "%1$s拴绳数据实体被设置为%2$s",
|
||||
"leashedplayer.command.leash.message.leash.data.set.failed.diff_level": "%1$s和%2$s不在同一维度上",
|
||||
"leashedplayer.command.leash.message.leash.data.set.failed.forbid_same_entity": "禁止设置同一实体",
|
||||
"leashedplayer.command.leash.message.leash.data.set.failed.no_knot_exist_in_that_pos": "未找到拴绳结在(X:%f, Y:%f, Z:%f)处",
|
||||
"leashedplayer.command.leash.message.leash.data.set.failed.too_far": "%1$s到%2$s的距离超过了1.2倍 拴绳长度,原长:%3$s 格",
|
||||
"leashedplayer.command.leash.message.leash.data.show": "%1$s的拴绳数据实体为%2$s",
|
||||
"leashedplayer.command.leash.message.leash.length.failed": "失败(内部错误,可能是你输的指令有误)",
|
||||
"leashedplayer.command.leash.message.leash.length.set": "%1$s的拴绳长度被设置为%2$s格",
|
||||
"leashedplayer.command.leash.message.leash.length.show": "%1$s的拴绳长度为%2$s格",
|
||||
"leashedplayer.command.motion.message.adder.successful": "§b添加成功.§a%s§7:§f[§e加速度§7:§a(§f%f§7,§f%f§7,§f%f§a)§f]§r",
|
||||
"leashedplayer.command.motion.message.multiply.successful": "§b倍乘成功.§a%s§7:§f[§e加速度§7:§a(§f%f§7,§f%f§7,§f%f§a)§f]§r",
|
||||
"leashedplayer.command.motion.message.setter.successful": "§b设置成功.§a%s§7:§f[§e加速度§7:§a(§f%f§7,§f%f§7,§f%f§a)§f]§r",
|
||||
"leashedplayer.lead_breaker.item.desc": "§7可以破坏拴绳链接",
|
||||
"leashedplayer.lead_breaker.item.use_fai": "§c无法剪断§f%2$s§c对§f%1$s§c拴绳链接",
|
||||
"leashedplayer.lead_breaker.item.use_suf": "§a成功剪断§f%2$s§a对§f%1$s§a拴绳链接",
|
||||
"leashedplayer.leash_rope.length.decrease": "§c减少§f%s的拴绳长度§c§7(§b长度§7:§e%d§7)",
|
||||
"leashedplayer.leash_rope.length.decrease.self": "§c减少拴绳长度§c§7(§b长度§7:§e%d§7)",
|
||||
"leashedplayer.leash_rope.length.failed": "§c失败",
|
||||
"leashedplayer.leash_rope.length.increase": "§a增加§f%s的拴绳长度§a§7(§b长度§7:§e%d§7)",
|
||||
"leashedplayer.leash_rope.length.increase.self": "§a增加拴绳长度§a§7(§b长度§7:§e%d§7)",
|
||||
"leashedplayer.leash_rope_arrow.try_to_pickup.push_shift_tip": "§a按下§f§lShift键§a以加快拾取",
|
||||
"painting.leashedplayer.group_photo.author": "§9闲趣§4时§e坞§r",
|
||||
"painting.leashedplayer.group_photo.title": "§d集体照 §7[§6纪念§7]§r",
|
||||
"sound.leashedplayer.subtitle.what_does_the_fox_say": "大楚兴~ 陈胜王~~"
|
||||
}
|
||||
88
src/generated/resources/assets/leashedplayer/lang/zh_tw.json
Normal file
88
src/generated/resources/assets/leashedplayer/lang/zh_tw.json
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
{
|
||||
"advancement.leashedplayer.advancement_leash_arrow": "更閃亮的拴繩箭?",
|
||||
"advancement.leashedplayer.advancement_leash_arrow.desc": "嗯,除了發光,其它好像沒什麽不同",
|
||||
"advancement.leashedplayer.dog_running_player": "遛“人”時間",
|
||||
"advancement.leashedplayer.dog_running_player.desc": "公園裏不許遛狗,於是狗站起來遛人",
|
||||
"advancement.leashedplayer.follow_arrow": "啓航!!!",
|
||||
"advancement.leashedplayer.follow_arrow.desc": "抱歉,麦块不講物理學",
|
||||
"advancement.leashedplayer.leash_arrow": "拴繩之箭?",
|
||||
"advancement.leashedplayer.leash_arrow.desc": "也許可以用它發射生物?",
|
||||
"advancement.leashedplayer.leash_start": "牽引之力",
|
||||
"advancement.leashedplayer.leash_start.desc": "拴繩大師之路",
|
||||
"advancement.leashedplayer.leash_terminator": "拴繩終結者",
|
||||
"advancement.leashedplayer.leash_terminator.desc": "吾將終結拴繩!",
|
||||
"advancement.leashedplayer.leashed_friend": "拴繩鏈接",
|
||||
"advancement.leashedplayer.leashed_friend.desc": "被玩家用拴繩鏈接",
|
||||
"advancement.leashedplayer.leashed_self": "穩固聯結",
|
||||
"advancement.leashedplayer.leashed_self.desc": "用栓繩拴住自己",
|
||||
"advancement.leashedplayer.neo_fox": "NEOFORGE!",
|
||||
"advancement.leashedplayer.neo_fox.desc": "似乎可以戴著",
|
||||
"advancement.leashedplayer.no_leash": "請恁勿拴唔",
|
||||
"advancement.leashedplayer.no_leash.desc": "恁不會被任何拴住",
|
||||
"advancement.leashedplayer.tipped_leash_arrow": "神說要有更多箭矢",
|
||||
"advancement.leashedplayer.tipped_leash_arrow.desc": "真是琳琅滿目啊",
|
||||
"creativetab.leashedplayer.leashedplayer_tab": "可拴玩家",
|
||||
"effect.leashedplayer.no_leash": "禁拴",
|
||||
"entity.leashedplayer.kid_player": "小孩",
|
||||
"entity.leashedplayer.leash_rope_arrow": "拴繩箭",
|
||||
"entity.leashedplayer.nestle_rope_arrow": "貼貼拴繩箭",
|
||||
"entity.leashedplayer.spectral_leash_rope_arrow": "拴繩光靈箭",
|
||||
"gamerule.LP.CreateLeashFenceKnotEntityIfAbsent": "如果缺失則創建拴繩結",
|
||||
"gamerule.LP.CreateLeashFenceKnotEntityIfAbsent.description": "如果在柵欄処缺失拴繩結,則創建它",
|
||||
"gamerule.LP.KeepLeashNotDropTime": "保持其不掉落的時間",
|
||||
"gamerule.LP.KeepLeashNotDropTime.description": "儅距離過遠時,保持其不掉落的時間(刻)",
|
||||
"gamerule.LP.TeleportWithLeashedPlayers": "被拴玩家随玩家持有者傳送",
|
||||
"gamerule.LP.TeleportWithLeashedPlayers.description": "將被拴玩家將隨持有者一起傳送",
|
||||
"item.leash_rope_arrow.desc.1": "§7該箭將會攜帶擁有者隨其飛行:",
|
||||
"item.leash_rope_arrow.desc.2": "§c1.§r 若擊中柵欄或生物時,將持有者拴在其上並以普通箭的形式掉落;",
|
||||
"item.leash_rope_arrow.desc.3": "§c2.§r 靠近該箭下蹲可以更快拾取該箭,如果該箭的持有者不是自己,則持有者將被拾取者拴住;",
|
||||
"item.leash_rope_arrow.desc.4": "§c3.§r 當箭從發射器發射時,第一個射中的生物將成為此箭的持有者並隨箭飛行;",
|
||||
"item.leash_rope_arrow.desc.5": "§c4.§r 在§c§l禁拴§7(§c§lno_leash§7)§r效果下,射出的箭行為將與發射器的行為相同。",
|
||||
"item.leash_rope_arrow.description": "帶有拴繩的箭矢?",
|
||||
"item.leashedplayer.amethyst_shears": "紫水晶剪刀",
|
||||
"item.leashedplayer.fabric": "Fabric",
|
||||
"item.leashedplayer.leash_rope_arrow": "拴繩箭",
|
||||
"item.leashedplayer.neoforge": "NeoForge",
|
||||
"item.leashedplayer.spectral_leash_rope_arrow": "拴繩光靈箭",
|
||||
"item.minecraft.lingering_potion.effect.no_leash": "滯留型禁拴藥水",
|
||||
"item.minecraft.potion.effect.no_leash": "禁拴藥水",
|
||||
"item.minecraft.splash_potion.effect.no_leash": "噴濺型禁拴藥水",
|
||||
"item.minecraft.tipped_arrow.effect.no_leash": "禁拴之箭",
|
||||
"item.spectral_leash_rope_arrow.desc": "擊中實體給予其§e§l發光§7(§e§lGlowing§7)§r效果",
|
||||
"item.tipped_leash_rope_arrow.desc": "擊中實體給予其药水效果",
|
||||
"item.tipped_leash_rope_arrow.name": "蘸有%1$s的拴繩箭",
|
||||
"item.variant.leash_rope_arrow.desc.1": "§7拴繩箭矢的一個變種",
|
||||
"item.variant.leash_rope_arrow.desc.2": "§c1.§r 功能與本體一致;",
|
||||
"jukebox_song.leashedplayer.what_does_the_fox_say": "狐狸是怎麽叫的?",
|
||||
"key.leashedplayer.category": "可拴玩家",
|
||||
"key.leashedplayer.leash_length.add": "增加拴繩長度",
|
||||
"key.leashedplayer.leash_length.not_support_to_not_player_entity": "僅對玩家有效",
|
||||
"key.leashedplayer.leash_length.sub": "減小拴繩長度",
|
||||
"leashedplayer.command.leash.message.leash.data.clear": "%1$s的拴繩數據(拴繩持有者實體:%2$s)現在已清除",
|
||||
"leashedplayer.command.leash.message.leash.data.clear.leash.clear.failed.no_data": "%1$s沒有拴繩數據實體可被清除",
|
||||
"leashedplayer.command.leash.message.leash.data.null": "%1$s沒有拴繩數據實體",
|
||||
"leashedplayer.command.leash.message.leash.data.set": "%1$s拴繩數據實體設置為%2$s",
|
||||
"leashedplayer.command.leash.message.leash.data.set.failed.diff_level": "%1$s和%2$s不在同一緯度上",
|
||||
"leashedplayer.command.leash.message.leash.data.set.failed.forbid_same_entity": "禁止設置同一實體",
|
||||
"leashedplayer.command.leash.message.leash.data.set.failed.no_knot_exist_in_that_pos": "未找到拴繩結在(X:%f, Y:%f, Z:%f)処",
|
||||
"leashedplayer.command.leash.message.leash.data.set.failed.too_far": "%1$s到%2$s的距離超過了1.2倍拴繩長度,原長:%3$s 格",
|
||||
"leashedplayer.command.leash.message.leash.data.show": "%1$s拴繩數據實體為%2$s",
|
||||
"leashedplayer.command.leash.message.leash.length.failed": "失敗(内部錯誤,,可能你輸入的指令有誤)",
|
||||
"leashedplayer.command.leash.message.leash.length.set": "%1$s的拴繩長度被設置為%2$s格",
|
||||
"leashedplayer.command.leash.message.leash.length.show": "%1$s的拴繩長度為%2$s格",
|
||||
"leashedplayer.command.motion.message.adder.successful": "§b添加成功.§a%s§7:§f[§e加速度§7:§a(§f%f§7,§f%f§7,§f%f§a)§f]§r",
|
||||
"leashedplayer.command.motion.message.multiply.successful": "§b倍乘成功.§a%s§7:§f[§e加速度§7:§a(§f%f§7,§f%f§7,§f%f§a)§f]§r",
|
||||
"leashedplayer.command.motion.message.setter.successful": "§b設置成功.§a%s§7:§f[§e加速度§7:§a(§f%f§7,§f%f§7,§f%f§a)§f]§r",
|
||||
"leashedplayer.lead_breaker.item.desc": "§7可以破壞拴繩鏈接",
|
||||
"leashedplayer.lead_breaker.item.use_fai": "§c未能剪斷§f%2$s§c對§f%1$s§c拴繩鏈接",
|
||||
"leashedplayer.lead_breaker.item.use_suf": "§a成功剪斷§f%2$s§a對§f%1$s§a拴繩鏈接",
|
||||
"leashedplayer.leash_rope.length.decrease": "§c減少§f%s§c的拴繩長度§7(§長度§7:§e%d§7)",
|
||||
"leashedplayer.leash_rope.length.decrease.self": "§c減少拴繩長度§7(§長度§7:§e%d§7)",
|
||||
"leashedplayer.leash_rope.length.failed": "§c失敗",
|
||||
"leashedplayer.leash_rope.length.increase": "§a增加§f%s§a的拴繩長度§7(§長度§7:§e%d§7)",
|
||||
"leashedplayer.leash_rope.length.increase.self": "§a增加拴繩長度§7(§長度§7:§e%d§7)",
|
||||
"leashedplayer.leash_rope_arrow.try_to_pickup.push_shift_tip": "§a按下§f§lShift鍵§a以加速拾取",
|
||||
"painting.leashedplayer.group_photo.author": "§9閑趣§4時§e塢§r",
|
||||
"painting.leashedplayer.group_photo.title": "§d集體照 §7[§6紀念§7]§r",
|
||||
"sound.leashedplayer.subtitle.what_does_the_fox_say": "大楚興~ 陳勝王~~"
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "leashedplayer:item/amethyst_shears"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/bow",
|
||||
"textures": {
|
||||
"layer0": "leashedplayer:item/bow_lra_pulling_0"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/bow",
|
||||
"textures": {
|
||||
"layer0": "leashedplayer:item/bow_lra_pulling_1"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/bow",
|
||||
"textures": {
|
||||
"layer0": "leashedplayer:item/bow_lra_pulling_2"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/crossbow",
|
||||
"textures": {
|
||||
"layer0": "leashedplayer:item/crossbow_leash_rope_arrow"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "leashedplayer:item/fabric"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "leashedplayer:item/leash_rope_arrow"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "leashedplayer:item/spectral_leash_rope_arrow"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"parent": "minecraft:item/generated",
|
||||
"textures": {
|
||||
"layer0": "leashedplayer:item/tipped_leash_rope_arrow_head",
|
||||
"layer1": "leashedplayer:item/tipped_leash_rope_arrow_base"
|
||||
}
|
||||
}
|
||||
8
src/generated/resources/assets/leashedplayer/sounds.json
Normal file
8
src/generated/resources/assets/leashedplayer/sounds.json
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"music/what_does_the_fox_say": {
|
||||
"sounds": [
|
||||
"leashedplayer:music/what_does_the_fox_say"
|
||||
],
|
||||
"subtitle": "sound.leashedplayer.subtitle.what_does_the_fox_say"
|
||||
}
|
||||
}
|
||||
65
src/generated/resources/assets/minecraft/items/bow.json
Normal file
65
src/generated/resources/assets/minecraft/items/bow.json
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
{
|
||||
"model": {
|
||||
"type": "minecraft:condition",
|
||||
"on_false": {
|
||||
"type": "minecraft:model",
|
||||
"model": "minecraft:item/bow"
|
||||
},
|
||||
"on_true": {
|
||||
"type": "leashedplayer:conditional_range",
|
||||
"fallback": {
|
||||
"type": "minecraft:model",
|
||||
"model": "minecraft:item/bow_pulling_0"
|
||||
},
|
||||
"falseModels": [
|
||||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "minecraft:item/bow_pulling_0"
|
||||
},
|
||||
"threshold": 0.0
|
||||
},
|
||||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "minecraft:item/bow_pulling_1"
|
||||
},
|
||||
"threshold": 0.65
|
||||
},
|
||||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "minecraft:item/bow_pulling_2"
|
||||
},
|
||||
"threshold": 0.9
|
||||
}
|
||||
],
|
||||
"property": "leashedplayer:bow_pull",
|
||||
"scale": 0.05,
|
||||
"trueModels": [
|
||||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "leashedplayer:item/bow_lra_pulling_0"
|
||||
},
|
||||
"threshold": 0.0
|
||||
},
|
||||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "leashedplayer:item/bow_lra_pulling_1"
|
||||
},
|
||||
"threshold": 0.65
|
||||
},
|
||||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "leashedplayer:item/bow_lra_pulling_2"
|
||||
},
|
||||
"threshold": 0.9
|
||||
}
|
||||
]
|
||||
},
|
||||
"property": "minecraft:using_item"
|
||||
}
|
||||
}
|
||||
61
src/generated/resources/assets/minecraft/items/crossbow.json
Normal file
61
src/generated/resources/assets/minecraft/items/crossbow.json
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
{
|
||||
"model": {
|
||||
"type": "minecraft:condition",
|
||||
"on_false": {
|
||||
"type": "minecraft:select",
|
||||
"cases": [
|
||||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "minecraft:item/crossbow_arrow"
|
||||
},
|
||||
"when": "arrow"
|
||||
},
|
||||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "minecraft:item/crossbow_firework"
|
||||
},
|
||||
"when": "rocket"
|
||||
},
|
||||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "leashedplayer:item/crossbow_leash_rope_arrow"
|
||||
},
|
||||
"when": "leash_rope_arrow"
|
||||
}
|
||||
],
|
||||
"fallback": {
|
||||
"type": "minecraft:model",
|
||||
"model": "minecraft:item/crossbow"
|
||||
},
|
||||
"property": "leashedplayer:charge_extend_type"
|
||||
},
|
||||
"on_true": {
|
||||
"type": "minecraft:range_dispatch",
|
||||
"entries": [
|
||||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "minecraft:item/crossbow_pulling_1"
|
||||
},
|
||||
"threshold": 0.58
|
||||
},
|
||||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "minecraft:item/crossbow_pulling_2"
|
||||
},
|
||||
"threshold": 1.0
|
||||
}
|
||||
],
|
||||
"fallback": {
|
||||
"type": "minecraft:model",
|
||||
"model": "minecraft:item/crossbow_pulling_0"
|
||||
},
|
||||
"property": "minecraft:crossbow/pull"
|
||||
},
|
||||
"property": "minecraft:using_item"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/bow",
|
||||
"textures": {
|
||||
"layer0": "minecraft:item/bow_pulling_0"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/bow",
|
||||
"textures": {
|
||||
"layer0": "minecraft:item/bow_pulling_1"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/bow",
|
||||
"textures": {
|
||||
"layer0": "minecraft:item/bow_pulling_2"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/crossbow",
|
||||
"textures": {
|
||||
"layer0": "minecraft:item/crossbow_arrow"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/crossbow",
|
||||
"textures": {
|
||||
"layer0": "minecraft:item/crossbow_firework"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/crossbow",
|
||||
"textures": {
|
||||
"layer0": "minecraft:item/crossbow_pulling_0"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/crossbow",
|
||||
"textures": {
|
||||
"layer0": "minecraft:item/crossbow_pulling_1"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/crossbow",
|
||||
"textures": {
|
||||
"layer0": "minecraft:item/crossbow_pulling_2"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"values": [
|
||||
"leashedplayer:amethyst_shears"
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
"parent": "leashedplayer:leash_arrow",
|
||||
"criteria": {
|
||||
"has_flash_leash_rope_item": {
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"items": "leashedplayer:spectral_leash_rope_arrow"
|
||||
}
|
||||
]
|
||||
},
|
||||
"trigger": "minecraft:inventory_changed"
|
||||
}
|
||||
},
|
||||
"display": {
|
||||
"announce_to_chat": false,
|
||||
"description": {
|
||||
"translate": "advancement.leashedplayer.advancement_leash_arrow.desc"
|
||||
},
|
||||
"hidden": true,
|
||||
"icon": {
|
||||
"count": 1,
|
||||
"id": "leashedplayer:spectral_leash_rope_arrow"
|
||||
},
|
||||
"title": {
|
||||
"translate": "advancement.leashedplayer.advancement_leash_arrow"
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_flash_leash_rope_item"
|
||||
]
|
||||
],
|
||||
"sends_telemetry_event": true
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"parent": "leashedplayer:leash_arrow",
|
||||
"criteria": {
|
||||
"leash_by_wo_do": {
|
||||
"conditions": {
|
||||
"holder": {
|
||||
"type": "minecraft:wolf"
|
||||
}
|
||||
},
|
||||
"trigger": "leashedplayer:leash_player"
|
||||
}
|
||||
},
|
||||
"display": {
|
||||
"description": {
|
||||
"translate": "advancement.leashedplayer.dog_running_player.desc"
|
||||
},
|
||||
"frame": "challenge",
|
||||
"hidden": true,
|
||||
"icon": {
|
||||
"count": 1,
|
||||
"id": "minecraft:bone"
|
||||
},
|
||||
"title": {
|
||||
"translate": "advancement.leashedplayer.dog_running_player"
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"leash_by_wo_do"
|
||||
]
|
||||
],
|
||||
"sends_telemetry_event": true
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"parent": "leashedplayer:leash_arrow",
|
||||
"criteria": {
|
||||
"leash_arrow": {
|
||||
"conditions": {
|
||||
"holder": {
|
||||
"type": "leashedplayer:leash_rope_arrow"
|
||||
}
|
||||
},
|
||||
"trigger": "leashedplayer:leash_player"
|
||||
}
|
||||
},
|
||||
"display": {
|
||||
"announce_to_chat": false,
|
||||
"description": {
|
||||
"translate": "advancement.leashedplayer.follow_arrow.desc"
|
||||
},
|
||||
"hidden": true,
|
||||
"icon": {
|
||||
"count": 1,
|
||||
"id": "leashedplayer:leash_rope_arrow"
|
||||
},
|
||||
"title": {
|
||||
"translate": "advancement.leashedplayer.follow_arrow"
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"leash_arrow"
|
||||
]
|
||||
],
|
||||
"sends_telemetry_event": true
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
"parent": "leashedplayer:leash_start",
|
||||
"criteria": {
|
||||
"has_leash_rope_item": {
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"items": "leashedplayer:leash_rope_arrow"
|
||||
}
|
||||
]
|
||||
},
|
||||
"trigger": "minecraft:inventory_changed"
|
||||
}
|
||||
},
|
||||
"display": {
|
||||
"announce_to_chat": false,
|
||||
"description": {
|
||||
"translate": "advancement.leashedplayer.leash_arrow.desc"
|
||||
},
|
||||
"hidden": true,
|
||||
"icon": {
|
||||
"count": 1,
|
||||
"id": "leashedplayer:leash_rope_arrow"
|
||||
},
|
||||
"title": {
|
||||
"translate": "advancement.leashedplayer.leash_arrow"
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_leash_rope_item"
|
||||
]
|
||||
],
|
||||
"sends_telemetry_event": true
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
"criteria": {
|
||||
"has_leash_rope_item": {
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"items": "minecraft:lead"
|
||||
}
|
||||
]
|
||||
},
|
||||
"trigger": "minecraft:inventory_changed"
|
||||
}
|
||||
},
|
||||
"display": {
|
||||
"announce_to_chat": false,
|
||||
"background": "leashedplayer:textures/gui/advancements/backgrounds/leashed_player",
|
||||
"description": {
|
||||
"translate": "advancement.leashedplayer.leash_start.desc"
|
||||
},
|
||||
"hidden": true,
|
||||
"icon": {
|
||||
"count": 1,
|
||||
"id": "minecraft:lead"
|
||||
},
|
||||
"title": {
|
||||
"translate": "advancement.leashedplayer.leash_start"
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_leash_rope_item"
|
||||
]
|
||||
],
|
||||
"sends_telemetry_event": true
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"parent": "leashedplayer:leash_start",
|
||||
"criteria": {
|
||||
"has_amethyst_shears": {
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"items": "leashedplayer:amethyst_shears"
|
||||
}
|
||||
]
|
||||
},
|
||||
"trigger": "minecraft:inventory_changed"
|
||||
}
|
||||
},
|
||||
"display": {
|
||||
"description": {
|
||||
"translate": "advancement.leashedplayer.leash_terminator.desc"
|
||||
},
|
||||
"hidden": true,
|
||||
"icon": {
|
||||
"count": 1,
|
||||
"id": "leashedplayer:amethyst_shears"
|
||||
},
|
||||
"title": {
|
||||
"translate": "advancement.leashedplayer.leash_terminator"
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_amethyst_shears"
|
||||
]
|
||||
],
|
||||
"sends_telemetry_event": true
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"parent": "leashedplayer:leash_start",
|
||||
"criteria": {
|
||||
"leash_other_player": {
|
||||
"conditions": {
|
||||
"holder": {
|
||||
"type": "minecraft:player"
|
||||
}
|
||||
},
|
||||
"trigger": "leashedplayer:leash_player"
|
||||
}
|
||||
},
|
||||
"display": {
|
||||
"description": {
|
||||
"translate": "advancement.leashedplayer.leashed_friend.desc"
|
||||
},
|
||||
"hidden": true,
|
||||
"icon": {
|
||||
"count": 1,
|
||||
"id": "minecraft:lead"
|
||||
},
|
||||
"title": {
|
||||
"translate": "advancement.leashedplayer.leashed_friend"
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"leash_other_player"
|
||||
]
|
||||
],
|
||||
"sends_telemetry_event": true
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"parent": "leashedplayer:leash_start",
|
||||
"criteria": {
|
||||
"leash_self": {
|
||||
"conditions": {
|
||||
"holder": {
|
||||
"type": "minecraft:leash_knot"
|
||||
}
|
||||
},
|
||||
"trigger": "leashedplayer:leash_player"
|
||||
}
|
||||
},
|
||||
"display": {
|
||||
"description": {
|
||||
"translate": "advancement.leashedplayer.leashed_self.desc"
|
||||
},
|
||||
"hidden": true,
|
||||
"icon": {
|
||||
"count": 1,
|
||||
"id": "minecraft:player_head"
|
||||
},
|
||||
"title": {
|
||||
"translate": "advancement.leashedplayer.leashed_self"
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"leash_self"
|
||||
]
|
||||
],
|
||||
"sends_telemetry_event": true
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
"parent": "leashedplayer:leash_start",
|
||||
"criteria": {
|
||||
"has_neo_fox": {
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"items": "leashedplayer:neoforge"
|
||||
}
|
||||
]
|
||||
},
|
||||
"trigger": "minecraft:inventory_changed"
|
||||
}
|
||||
},
|
||||
"display": {
|
||||
"announce_to_chat": false,
|
||||
"description": {
|
||||
"translate": "advancement.leashedplayer.neo_fox.desc"
|
||||
},
|
||||
"frame": "goal",
|
||||
"hidden": true,
|
||||
"icon": {
|
||||
"count": 1,
|
||||
"id": "leashedplayer:neoforge"
|
||||
},
|
||||
"title": {
|
||||
"translate": "advancement.leashedplayer.neo_fox"
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_neo_fox"
|
||||
]
|
||||
],
|
||||
"sends_telemetry_event": true
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"parent": "leashedplayer:leash_start",
|
||||
"criteria": {
|
||||
"no_leash": {
|
||||
"conditions": {
|
||||
"effects": {
|
||||
"leashedplayer:no_leash": {}
|
||||
}
|
||||
},
|
||||
"trigger": "minecraft:effects_changed"
|
||||
}
|
||||
},
|
||||
"display": {
|
||||
"description": {
|
||||
"translate": "advancement.leashedplayer.no_leash.desc"
|
||||
},
|
||||
"frame": "goal",
|
||||
"hidden": true,
|
||||
"icon": {
|
||||
"count": 1,
|
||||
"id": "minecraft:barrier"
|
||||
},
|
||||
"title": {
|
||||
"translate": "advancement.leashedplayer.no_leash"
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"no_leash"
|
||||
]
|
||||
],
|
||||
"sends_telemetry_event": true
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"criteria": {
|
||||
"has_amethyst_shard": {
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"items": "minecraft:amethyst_shard"
|
||||
}
|
||||
]
|
||||
},
|
||||
"trigger": "minecraft:inventory_changed"
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"conditions": {
|
||||
"recipe": "leashedplayer:amethyst_shears"
|
||||
},
|
||||
"trigger": "minecraft:recipe_unlocked"
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_the_recipe",
|
||||
"has_amethyst_shard"
|
||||
]
|
||||
],
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"leashedplayer:amethyst_shears"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"criteria": {
|
||||
"has_lead": {
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"items": "minecraft:lead"
|
||||
}
|
||||
]
|
||||
},
|
||||
"trigger": "minecraft:inventory_changed"
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"conditions": {
|
||||
"recipe": "leashedplayer:leash_rope_arrow"
|
||||
},
|
||||
"trigger": "minecraft:recipe_unlocked"
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_the_recipe",
|
||||
"has_lead"
|
||||
]
|
||||
],
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"leashedplayer:leash_rope_arrow"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"criteria": {
|
||||
"has_lead": {
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"items": "minecraft:lead"
|
||||
}
|
||||
]
|
||||
},
|
||||
"trigger": "minecraft:inventory_changed"
|
||||
},
|
||||
"has_spectral_arrow": {
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"items": "minecraft:spectral_arrow"
|
||||
}
|
||||
]
|
||||
},
|
||||
"trigger": "minecraft:inventory_changed"
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"conditions": {
|
||||
"recipe": "leashedplayer:spectral_leash_rope_arrow"
|
||||
},
|
||||
"trigger": "minecraft:recipe_unlocked"
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_the_recipe",
|
||||
"has_lead",
|
||||
"has_spectral_arrow"
|
||||
]
|
||||
],
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"leashedplayer:spectral_leash_rope_arrow"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
"parent": "leashedplayer:leash_arrow",
|
||||
"criteria": {
|
||||
"has_tipped_leash_arrow": {
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"items": "leashedplayer:tipped_leash_rope_arrow"
|
||||
}
|
||||
]
|
||||
},
|
||||
"trigger": "minecraft:inventory_changed"
|
||||
}
|
||||
},
|
||||
"display": {
|
||||
"description": {
|
||||
"translate": "advancement.leashedplayer.tipped_leash_arrow.desc"
|
||||
},
|
||||
"frame": "goal",
|
||||
"hidden": true,
|
||||
"icon": {
|
||||
"count": 1,
|
||||
"id": "leashedplayer:tipped_leash_rope_arrow"
|
||||
},
|
||||
"title": {
|
||||
"translate": "advancement.leashedplayer.tipped_leash_arrow"
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_tipped_leash_arrow"
|
||||
]
|
||||
],
|
||||
"sends_telemetry_event": true
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"comparator_output": 15,
|
||||
"description": {
|
||||
"translate": "jukebox_song.leashedplayer.what_does_the_fox_say"
|
||||
},
|
||||
"length_in_seconds": 121.0,
|
||||
"sound_event": "leashedplayer:what_does_the_fox_say"
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"asset_id": "leashedplayer:group_photo",
|
||||
"author": {
|
||||
"translate": "painting.leashedplayer.group_photo.author"
|
||||
},
|
||||
"height": 3,
|
||||
"title": {
|
||||
"translate": "painting.leashedplayer.group_photo.title"
|
||||
},
|
||||
"width": 4
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"category": "misc",
|
||||
"key": {
|
||||
"#": "minecraft:amethyst_shard",
|
||||
"%": "minecraft:stick"
|
||||
},
|
||||
"pattern": [
|
||||
"#%",
|
||||
"%#"
|
||||
],
|
||||
"result": {
|
||||
"count": 1,
|
||||
"id": "leashedplayer:amethyst_shears"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shapeless",
|
||||
"category": "misc",
|
||||
"ingredients": [
|
||||
"minecraft:lead",
|
||||
"minecraft:arrow"
|
||||
],
|
||||
"result": {
|
||||
"count": 1,
|
||||
"id": "leashedplayer:leash_rope_arrow"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shapeless",
|
||||
"category": "misc",
|
||||
"ingredients": [
|
||||
"minecraft:lead",
|
||||
"minecraft:spectral_arrow"
|
||||
],
|
||||
"result": {
|
||||
"count": 1,
|
||||
"id": "leashedplayer:spectral_leash_rope_arrow"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
{
|
||||
"parent": "minecraft:recipes/root",
|
||||
"criteria": {
|
||||
"has_glowstone_dust": {
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"items": "minecraft:glowstone_dust"
|
||||
}
|
||||
]
|
||||
},
|
||||
"trigger": "minecraft:inventory_changed"
|
||||
},
|
||||
"has_lead": {
|
||||
"conditions": {
|
||||
"items": [
|
||||
{
|
||||
"items": "minecraft:lead"
|
||||
}
|
||||
]
|
||||
},
|
||||
"trigger": "minecraft:inventory_changed"
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"conditions": {
|
||||
"recipe": "minecraft:leash_rope_arrow_shape"
|
||||
},
|
||||
"trigger": "minecraft:recipe_unlocked"
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"has_the_recipe",
|
||||
"has_lead",
|
||||
"has_glowstone_dust"
|
||||
]
|
||||
],
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"minecraft:leash_rope_arrow_shape"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"category": "misc",
|
||||
"key": {
|
||||
"#": "leashedplayer:leash_rope_arrow",
|
||||
"$": "minecraft:glowstone_dust"
|
||||
},
|
||||
"pattern": [
|
||||
" $ ",
|
||||
"$#$",
|
||||
" $ "
|
||||
],
|
||||
"result": {
|
||||
"count": 1,
|
||||
"id": "leashedplayer:spectral_leash_rope_arrow"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"type": "leashedplayer:tipped_leash_rope_arrow_a_recipe",
|
||||
"category": "misc"
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"type": "leashedplayer:tipped_leash_rope_arrow_b_recipe",
|
||||
"category": "misc"
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"values": [
|
||||
"minecraft:amethyst_shard"
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"values": [
|
||||
"leashedplayer:leash_rope_arrow",
|
||||
"leashedplayer:spectral_leash_rope_arrow",
|
||||
"leashedplayer:tipped_leash_rope_arrow"
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"values": [
|
||||
"leashedplayer:amethyst_shears"
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"values": [
|
||||
"leashedplayer:amethyst_shears"
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"values": [
|
||||
"leashedplayer:amethyst_shears"
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"values": [
|
||||
"leashedplayer:neoforge",
|
||||
"minecraft:lead"
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"values": [
|
||||
"leashedplayer:group_photo"
|
||||
]
|
||||
}
|
||||
|
|
@ -92,7 +92,7 @@ public class LeadBreakerItem extends ShearsItem {
|
|||
} else return InteractionResult.PASS;
|
||||
}
|
||||
}
|
||||
return InteractionResult.PASS;
|
||||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -116,6 +116,7 @@ public class LeadBreakerItem extends ShearsItem {
|
|||
PlayerLeashable playerLeashable = (PlayerLeashable) pPlayer;
|
||||
if (playerLeashable.getLeashDataFromEntityData() != null) {
|
||||
pPlayer.playSound(SoundEvents.SHEEP_SHEAR, 1.0F, 1.0F);
|
||||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
}
|
||||
return super.use(pLevel, pPlayer, pUsedHand);
|
||||
|
|
|
|||
|
|
@ -317,10 +317,6 @@ public abstract class MixinPlayer extends LivingEntity implements PlayerLeashabl
|
|||
method = {"readAdditionalSaveData"}, at = {@At("RETURN")}
|
||||
)//数据读取
|
||||
private void readSaveData(CompoundTag pCompound, CallbackInfo ci) {
|
||||
Leashable.LeashData leashable$leashdata = pCompound.read("Pl$LeashData", Leashable.LeashData.CODEC).orElse(null);
|
||||
if (this.getLeashData() != null && leashable$leashdata == null) {
|
||||
this.removeLeash();
|
||||
}
|
||||
this.setLeashData(leashable$leashdata);
|
||||
this.readLeashData(pCompound);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
package com.r3944realms.leashedplayer.modInterface;
|
||||
|
||||
import com.mojang.serialization.Codec;
|
||||
import com.r3944realms.leashedplayer.content.commands.LeashCommand;
|
||||
import com.r3944realms.leashedplayer.content.criteriaTriggers.ModCriteriaTriggers;
|
||||
import com.r3944realms.leashedplayer.utils.Util;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.protocol.game.ClientboundSetEntityLinkPacket;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
|
|
@ -36,12 +38,29 @@ public interface PlayerLeashable extends Leashable {
|
|||
* 是否立即可被拴住
|
||||
*/
|
||||
boolean canBeLeashedInstantly(Player player);
|
||||
@Override
|
||||
default void writeLeashData(CompoundTag tag, @org.jetbrains.annotations.Nullable Leashable.LeashData leashData) {
|
||||
tag.storeNullable("Pl$LeashData", Leashable.LeashData.CODEC, leashData);
|
||||
}
|
||||
|
||||
@Override
|
||||
default void readLeashData(CompoundTag tag) {
|
||||
CompoundTag compoundTag = tag.read("Pl$LeashData", CompoundTag.CODEC).orElse(null);
|
||||
if (compoundTag != null) {
|
||||
Leashable.LeashData leashable$leashdata = compoundTag.read("Pl$LeashData", Leashable.LeashData.CODEC).orElse(null);
|
||||
if (this.getLeashData() != null && leashable$leashdata == null) {
|
||||
this.removeLeash();
|
||||
}
|
||||
this.setLeashData(leashable$leashdata);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置栓绳数据
|
||||
* @param pLeashHolder 拴绳持有者
|
||||
* @param pBroadcastPacket 是否广播包
|
||||
*/
|
||||
@Override
|
||||
default void setLeashedTo(@NotNull Entity pLeashHolder, boolean pBroadcastPacket) {
|
||||
setLeashedTo((Entity & Leashable)this, pLeashHolder, pBroadcastPacket);
|
||||
if(this instanceof ServerPlayer) {
|
||||
|
|
|
|||
92
src/main/resources/META-INF/neoforge.mods.toml
Normal file
92
src/main/resources/META-INF/neoforge.mods.toml
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
# This is an example neoforge.mods.toml file. It contains the data relating to the loading mods.
|
||||
# There are several mandatory fields (#mandatory), and many more that are optional (#optional).
|
||||
# The overall format is standard TOML format, v0.5.0.
|
||||
# Note that there are a couple of TOML lists in this file.
|
||||
# Find more information on toml format here: https://github.com/toml-lang/toml
|
||||
# The name of the mod loader type to load - for regular FML @Mod mods it should be javafml
|
||||
modLoader="javafml" #mandatory
|
||||
|
||||
# A version range to match for said mod loader - for regular FML @Mod it will be the FML version. This is currently 2.
|
||||
loaderVersion="${loader_version_range}" #mandatory
|
||||
|
||||
# The license for you mod. This is mandatory metadata and allows for easier comprehension of your redistributive properties.
|
||||
# Review your options at https://choosealicense.com/. All rights reserved is the default copyright stance, and is thus the default here.
|
||||
license="${mod_license}"
|
||||
|
||||
# A URL to refer people to when problems occur with this mod
|
||||
issueTrackerURL="https://github.com/3944Realms/R39_Whimsy_NeoForgeModProject_Sub/issues" #optional
|
||||
|
||||
# A list of mods - how many allowed here is determined by the individual mod loader
|
||||
[[mods]] #mandatory
|
||||
|
||||
# The modid of the mod
|
||||
modId="${mod_id}" #mandatory
|
||||
|
||||
# The version number of the mod
|
||||
version="${mod_version}" #mandatory
|
||||
|
||||
# A display name for the mod
|
||||
displayName="${mod_name}" #mandatory
|
||||
|
||||
# A URL to query for updates for this mod. See the JSON update specification https://docs.neoforged.net/docs/misc/updatechecker/
|
||||
#updateJSONURL="https://change.me.example.invalid/updates.json" #optional
|
||||
|
||||
# A URL for the "homepage" for this mod, displayed in the mod UI
|
||||
displayURL="https://github.com/3944Realms/R39_Whimsy_NeoForgeModProject_Sub" #optional
|
||||
|
||||
# A file name (in the root of the mod JAR) containing a logo for display
|
||||
logoFile="leashedplayerlogo.png" #optional
|
||||
|
||||
# A text field displayed in the mod UI
|
||||
#credits="" #optional
|
||||
|
||||
# A text field displayed in the mod UI
|
||||
authors="${mod_authors}" #optional
|
||||
|
||||
# The description text for the mod (multi line!) (#mandatory)
|
||||
description='''${mod_description}'''
|
||||
|
||||
# The [[mixins]] block allows you to declare your mixin config to FML so that it gets loaded.
|
||||
[[mixins]]
|
||||
config="${mod_id}.mixins.json"
|
||||
|
||||
# The [[accessTransformers]] block allows you to declare where your AT file is.
|
||||
# If this block is omitted, a fallback attempt will be made to load an AT from META-INF/accesstransformer.cfg
|
||||
[[accessTransformers]]
|
||||
file="META-INF/accesstransformer.cfg"
|
||||
|
||||
# The coremods config file path is not configurable and is always loaded from META-INF/coremods.json
|
||||
|
||||
# A dependency - use the . to indicate dependency for a specific modid. Dependencies are optional.
|
||||
[[dependencies.${mod_id}]] #optional
|
||||
# the modid of the dependency
|
||||
modId="neoforge" #mandatory
|
||||
# The type of the dependency. Can be one of "required", "optional", "incompatible" or "discouraged" (case insensitive).
|
||||
# 'required' requires the mod to exist, 'optional' does not
|
||||
# 'incompatible' will prevent the game from loading when the mod exists, and 'discouraged' will show a warning
|
||||
type="required" #mandatory
|
||||
# Optional field describing why the dependency is required or why it is incompatible
|
||||
# reason="..."
|
||||
# The version range of the dependency
|
||||
versionRange="${neo_version_range}" #mandatory
|
||||
# An ordering relationship for the dependency.
|
||||
# BEFORE - This mod is loaded BEFORE the dependency
|
||||
# AFTER - This mod is loaded AFTER the dependency
|
||||
ordering="NONE"
|
||||
# Side this dependency is applied on - BOTH, CLIENT, or SERVER
|
||||
side="BOTH"
|
||||
|
||||
# Here's another dependency
|
||||
[[dependencies.${mod_id}]]
|
||||
modId="minecraft"
|
||||
type="required"
|
||||
# This version range declares a minimum of the current minecraft version up to but not including the next major version
|
||||
versionRange="${minecraft_version_range}"
|
||||
ordering="NONE"
|
||||
side="BOTH"
|
||||
|
||||
# Features are specific properties of the game environment, that you may want to declare you require. This example declares
|
||||
# that your mod requires GL version 3.2 or higher. Other features will be added. They are side aware so declaring this won't
|
||||
# stop your mod loading on the server for example.
|
||||
#[features.${mod_id}]
|
||||
#openGLVersion="[3.2,)"
|
||||
Loading…
Reference in New Issue
Block a user