Mirror von
https://github.com/GeyserMC/Geyser.git
synchronisiert 2024-11-20 15:00:11 +01:00
Merge branch 'master' into rp
Dieser Commit ist enthalten in:
Commit
5b52769588
1
.github/workflows/build.yml
vendored
1
.github/workflows/build.yml
vendored
@ -16,7 +16,6 @@ on:
|
|||||||
- 'LICENSE'
|
- 'LICENSE'
|
||||||
- 'Jenkinsfile '
|
- 'Jenkinsfile '
|
||||||
- 'README.md'
|
- 'README.md'
|
||||||
- 'licenseheader.txt'
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
2
LICENSE
2
LICENSE
@ -1,6 +1,6 @@
|
|||||||
The MIT License
|
The MIT License
|
||||||
|
|
||||||
Copyright (c) 2019-2023 GeyserMC. http://geysermc.org
|
Copyright (c) 2019-2024 GeyserMC. http://geysermc.org
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -89,7 +89,7 @@ sourceSets {
|
|||||||
blossom {
|
blossom {
|
||||||
val info = GitInfo()
|
val info = GitInfo()
|
||||||
javaSources {
|
javaSources {
|
||||||
property("version", "${info.version} (${info.gitVersion})")
|
property("version", info.version)
|
||||||
property("gitVersion", info.gitVersion)
|
property("gitVersion", info.gitVersion)
|
||||||
property("buildNumber", info.buildNumber.toString())
|
property("buildNumber", info.buildNumber.toString())
|
||||||
property("branch", info.branch)
|
property("branch", info.branch)
|
||||||
|
@ -695,7 +695,7 @@ public class GeyserImpl implements GeyserApi {
|
|||||||
@SuppressWarnings("BooleanMethodIsAlwaysInverted")
|
@SuppressWarnings("BooleanMethodIsAlwaysInverted")
|
||||||
public boolean isProductionEnvironment() {
|
public boolean isProductionEnvironment() {
|
||||||
// First is if Blossom runs, second is if Blossom doesn't run
|
// First is if Blossom runs, second is if Blossom doesn't run
|
||||||
//noinspection ConstantConditions,MismatchedStringCase - changes in production
|
//noinspection ConstantConditions - changes in production
|
||||||
return !("git-local/dev-0000000".equals(GeyserImpl.GIT_VERSION) || "${gitVersion}".equals(GeyserImpl.GIT_VERSION));
|
return !("git-local/dev-0000000".equals(GeyserImpl.GIT_VERSION) || "${gitVersion}".equals(GeyserImpl.GIT_VERSION));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ import java.util.Set;
|
|||||||
|
|
||||||
@Builder
|
@Builder
|
||||||
@Value
|
@Value
|
||||||
public class BlockMappings implements DefinitionRegistry<GeyserBedrockBlock> {
|
public class BlockMappings implements DefinitionRegistry<BlockDefinition> {
|
||||||
GeyserBedrockBlock bedrockAir;
|
GeyserBedrockBlock bedrockAir;
|
||||||
BlockDefinition bedrockWater;
|
BlockDefinition bedrockWater;
|
||||||
BlockDefinition bedrockMovingBlock;
|
BlockDefinition bedrockMovingBlock;
|
||||||
@ -134,7 +134,7 @@ public class BlockMappings implements DefinitionRegistry<GeyserBedrockBlock> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isRegistered(GeyserBedrockBlock bedrockBlock) {
|
public boolean isRegistered(BlockDefinition bedrockBlock) {
|
||||||
return getDefinition(bedrockBlock.getRuntimeId()) == bedrockBlock;
|
return getDefinition(bedrockBlock.getRuntimeId()) == bedrockBlock;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -57,7 +57,6 @@ import org.cloudburstmc.protocol.bedrock.data.command.SoftEnumUpdateType;
|
|||||||
import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
|
import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
|
||||||
import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
|
import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
|
||||||
import org.cloudburstmc.protocol.bedrock.packet.*;
|
import org.cloudburstmc.protocol.bedrock.packet.*;
|
||||||
import org.cloudburstmc.protocol.common.DefinitionRegistry;
|
|
||||||
import org.cloudburstmc.protocol.common.util.OptionalBoolean;
|
import org.cloudburstmc.protocol.common.util.OptionalBoolean;
|
||||||
import org.geysermc.api.util.BedrockPlatform;
|
import org.geysermc.api.util.BedrockPlatform;
|
||||||
import org.geysermc.api.util.InputMode;
|
import org.geysermc.api.util.InputMode;
|
||||||
@ -1466,7 +1465,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
|
|||||||
|
|
||||||
private void startGame() {
|
private void startGame() {
|
||||||
this.upstream.getCodecHelper().setItemDefinitions(this.itemMappings);
|
this.upstream.getCodecHelper().setItemDefinitions(this.itemMappings);
|
||||||
this.upstream.getCodecHelper().setBlockDefinitions((DefinitionRegistry) this.blockMappings); //FIXME
|
this.upstream.getCodecHelper().setBlockDefinitions(this.blockMappings);
|
||||||
this.upstream.getCodecHelper().setCameraPresetDefinitions(CameraDefinitions.CAMERA_DEFINITIONS);
|
this.upstream.getCodecHelper().setCameraPresetDefinitions(CameraDefinitions.CAMERA_DEFINITIONS);
|
||||||
|
|
||||||
StartGamePacket startGamePacket = new StartGamePacket();
|
StartGamePacket startGamePacket = new StartGamePacket();
|
||||||
|
@ -52,6 +52,7 @@ import org.geysermc.geyser.text.ChatColor;
|
|||||||
import org.geysermc.geyser.text.MinecraftLocale;
|
import org.geysermc.geyser.text.MinecraftLocale;
|
||||||
import org.geysermc.geyser.translator.text.MessageTranslator;
|
import org.geysermc.geyser.translator.text.MessageTranslator;
|
||||||
import org.geysermc.geyser.util.InventoryUtils;
|
import org.geysermc.geyser.util.InventoryUtils;
|
||||||
|
import org.geysermc.mcprotocollib.protocol.data.game.entity.attribute.AttributeType;
|
||||||
import org.geysermc.mcprotocollib.protocol.data.game.entity.attribute.ModifierOperation;
|
import org.geysermc.mcprotocollib.protocol.data.game.entity.attribute.ModifierOperation;
|
||||||
import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
|
import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
|
||||||
import org.geysermc.mcprotocollib.protocol.data.game.item.component.*;
|
import org.geysermc.mcprotocollib.protocol.data.game.item.component.*;
|
||||||
@ -209,7 +210,7 @@ public final class ItemTranslator {
|
|||||||
Map<ItemAttributeModifiers.EquipmentSlotGroup, List<String>> slotsToModifiers = new HashMap<>();
|
Map<ItemAttributeModifiers.EquipmentSlotGroup, List<String>> slotsToModifiers = new HashMap<>();
|
||||||
for (ItemAttributeModifiers.Entry entry : modifiers.getModifiers()) {
|
for (ItemAttributeModifiers.Entry entry : modifiers.getModifiers()) {
|
||||||
// convert the modifier tag to a lore entry
|
// convert the modifier tag to a lore entry
|
||||||
String loreEntry = attributeToLore(entry.getModifier(), language);
|
String loreEntry = attributeToLore(entry.getAttribute(), entry.getModifier(), language);
|
||||||
if (loreEntry == null) {
|
if (loreEntry == null) {
|
||||||
continue; // invalid or failed
|
continue; // invalid or failed
|
||||||
}
|
}
|
||||||
@ -254,13 +255,13 @@ public final class ItemTranslator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private static String attributeToLore(ItemAttributeModifiers.AttributeModifier modifier, String language) {
|
private static String attributeToLore(int attribute, ItemAttributeModifiers.AttributeModifier modifier, String language) {
|
||||||
double amount = modifier.getAmount();
|
double amount = modifier.getAmount();
|
||||||
if (amount == 0) {
|
if (amount == 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
String name = modifier.getId().asMinimalString();
|
String name = AttributeType.Builtin.from(attribute).getIdentifier().asMinimalString();
|
||||||
// the namespace does not need to be present, but if it is, the java client ignores it as of pre-1.20.5
|
// the namespace does not need to be present, but if it is, the java client ignores it as of pre-1.20.5
|
||||||
|
|
||||||
ModifierOperation operation = modifier.getOperation();
|
ModifierOperation operation = modifier.getOperation();
|
||||||
|
@ -60,6 +60,7 @@ import java.util.function.Function;
|
|||||||
|
|
||||||
@Translator(packet = ClientboundLevelParticlesPacket.class)
|
@Translator(packet = ClientboundLevelParticlesPacket.class)
|
||||||
public class JavaLevelParticlesTranslator extends PacketTranslator<ClientboundLevelParticlesPacket> {
|
public class JavaLevelParticlesTranslator extends PacketTranslator<ClientboundLevelParticlesPacket> {
|
||||||
|
private static final int MAX_PARTICLES = 100;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void translate(GeyserSession session, ClientboundLevelParticlesPacket packet) {
|
public void translate(GeyserSession session, ClientboundLevelParticlesPacket packet) {
|
||||||
@ -71,7 +72,8 @@ public class JavaLevelParticlesTranslator extends PacketTranslator<ClientboundLe
|
|||||||
session.sendUpstreamPacket(particleCreateFunction.apply(position));
|
session.sendUpstreamPacket(particleCreateFunction.apply(position));
|
||||||
} else {
|
} else {
|
||||||
Random random = ThreadLocalRandom.current();
|
Random random = ThreadLocalRandom.current();
|
||||||
for (int i = 0; i < packet.getAmount(); i++) {
|
int amount = Math.min(MAX_PARTICLES, packet.getAmount());
|
||||||
|
for (int i = 0; i < amount; i++) {
|
||||||
double offsetX = random.nextGaussian() * (double) packet.getOffsetX();
|
double offsetX = random.nextGaussian() * (double) packet.getOffsetX();
|
||||||
double offsetY = random.nextGaussian() * (double) packet.getOffsetY();
|
double offsetY = random.nextGaussian() * (double) packet.getOffsetY();
|
||||||
double offsetZ = random.nextGaussian() * (double) packet.getOffsetZ();
|
double offsetZ = random.nextGaussian() * (double) packet.getOffsetZ();
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 23cb22f9ceeb7f24b896a69a711944d7f3e756ed
|
Subproject commit 69e302bf3a118e5274f86b23a1818c61dba84c64
|
@ -1,24 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
|
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
* @author GeyserMC
|
|
||||||
* @link https://github.com/GeyserMC/Geyser
|
|
||||||
*/
|
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren