From 61fe2fa9329d4d3058da89c7f9438704866d2e3b Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sun, 8 Nov 2020 18:58:33 +0800 Subject: [PATCH] Add PackRepositoryHooks and DyeColorHooks --- .../architectury/hooks/DyeColorHooks.java | 40 ++++++++++++++++++ .../hooks/PackRepositoryHooks.java | 41 +++++++++++++++++++ .../hooks/fabric/DyeColorHooksImpl.java | 27 ++++++++++++ .../hooks/fabric/PackRepositoryHooksImpl.java | 34 +++++++++++++++ .../main/resources/architectury.accessWidener | 5 ++- .../hooks/forge/DyeColorHooksImpl.java | 27 ++++++++++++ .../hooks/forge/PackRepositoryHooksImpl.java | 28 +++++++++++++ 7 files changed, 201 insertions(+), 1 deletion(-) create mode 100644 common/src/main/java/me/shedaniel/architectury/hooks/DyeColorHooks.java create mode 100644 common/src/main/java/me/shedaniel/architectury/hooks/PackRepositoryHooks.java create mode 100644 fabric/src/main/java/me/shedaniel/architectury/hooks/fabric/DyeColorHooksImpl.java create mode 100644 fabric/src/main/java/me/shedaniel/architectury/hooks/fabric/PackRepositoryHooksImpl.java create mode 100644 forge/src/main/java/me/shedaniel/architectury/hooks/forge/DyeColorHooksImpl.java create mode 100644 forge/src/main/java/me/shedaniel/architectury/hooks/forge/PackRepositoryHooksImpl.java diff --git a/common/src/main/java/me/shedaniel/architectury/hooks/DyeColorHooks.java b/common/src/main/java/me/shedaniel/architectury/hooks/DyeColorHooks.java new file mode 100644 index 00000000..27ce6c5e --- /dev/null +++ b/common/src/main/java/me/shedaniel/architectury/hooks/DyeColorHooks.java @@ -0,0 +1,40 @@ +/* + * Copyright 2020 shedaniel + * + * 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 + * + * http://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. + */ + +package me.shedaniel.architectury.hooks; + +import me.shedaniel.architectury.ArchitecturyPopulator; +import me.shedaniel.architectury.Populatable; +import net.minecraft.world.item.DyeColor; + +public class DyeColorHooks { + private DyeColorHooks() {} + + @Populatable + private static final Impl IMPL = null; + + public static int getColorValue(DyeColor color) { + return IMPL.getColorValue(color); + } + + public interface Impl { + int getColorValue(DyeColor color); + } + + static { + ArchitecturyPopulator.populate(); + } +} diff --git a/common/src/main/java/me/shedaniel/architectury/hooks/PackRepositoryHooks.java b/common/src/main/java/me/shedaniel/architectury/hooks/PackRepositoryHooks.java new file mode 100644 index 00000000..0a59b276 --- /dev/null +++ b/common/src/main/java/me/shedaniel/architectury/hooks/PackRepositoryHooks.java @@ -0,0 +1,41 @@ +/* + * Copyright 2020 shedaniel + * + * 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 + * + * http://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. + */ + +package me.shedaniel.architectury.hooks; + +import me.shedaniel.architectury.ArchitecturyPopulator; +import me.shedaniel.architectury.Populatable; +import net.minecraft.server.packs.repository.PackRepository; +import net.minecraft.server.packs.repository.RepositorySource; + +public class PackRepositoryHooks { + private PackRepositoryHooks() {} + + @Populatable + private static final Impl IMPL = null; + + public static void addSource(PackRepository repository, RepositorySource source) { + IMPL.addSource(repository, source); + } + + public interface Impl { + void addSource(PackRepository repository, RepositorySource source); + } + + static { + ArchitecturyPopulator.populate(); + } +} diff --git a/fabric/src/main/java/me/shedaniel/architectury/hooks/fabric/DyeColorHooksImpl.java b/fabric/src/main/java/me/shedaniel/architectury/hooks/fabric/DyeColorHooksImpl.java new file mode 100644 index 00000000..a09fcf94 --- /dev/null +++ b/fabric/src/main/java/me/shedaniel/architectury/hooks/fabric/DyeColorHooksImpl.java @@ -0,0 +1,27 @@ +/* + * Copyright 2020 shedaniel + * + * 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 + * + * http://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. + */ + +package me.shedaniel.architectury.hooks.fabric; + +import me.shedaniel.architectury.hooks.DyeColorHooks; +import net.minecraft.world.item.DyeColor; + +public class DyeColorHooksImpl implements DyeColorHooks.Impl { + @Override + public int getColorValue(DyeColor color) { + return color.textureDiffuseColor; + } +} diff --git a/fabric/src/main/java/me/shedaniel/architectury/hooks/fabric/PackRepositoryHooksImpl.java b/fabric/src/main/java/me/shedaniel/architectury/hooks/fabric/PackRepositoryHooksImpl.java new file mode 100644 index 00000000..cc1ce35f --- /dev/null +++ b/fabric/src/main/java/me/shedaniel/architectury/hooks/fabric/PackRepositoryHooksImpl.java @@ -0,0 +1,34 @@ +/* + * Copyright 2020 shedaniel + * + * 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 + * + * http://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. + */ + +package me.shedaniel.architectury.hooks.fabric; + +import com.google.common.collect.ImmutableSet; +import me.shedaniel.architectury.hooks.PackRepositoryHooks; +import net.minecraft.server.packs.repository.PackRepository; +import net.minecraft.server.packs.repository.RepositorySource; + +import java.util.ArrayList; +import java.util.List; + +public class PackRepositoryHooksImpl implements PackRepositoryHooks.Impl { + @Override + public void addSource(PackRepository repository, RepositorySource source) { + List set = new ArrayList<>(repository.sources); + set.add(source); + repository.sources = ImmutableSet.copyOf(set); + } +} diff --git a/fabric/src/main/resources/architectury.accessWidener b/fabric/src/main/resources/architectury.accessWidener index 15112cba..aa6cbe33 100644 --- a/fabric/src/main/resources/architectury.accessWidener +++ b/fabric/src/main/resources/architectury.accessWidener @@ -47,4 +47,7 @@ accessible field net/minecraft/world/level/block/state/BlockBehaviour$Properties mutable field net/minecraft/world/level/block/state/BlockBehaviour$Properties emissiveRendering Lnet/minecraft/world/level/block/state/BlockBehaviour$StatePredicate; accessible field net/minecraft/world/level/block/state/BlockBehaviour$Properties dynamicShape Z mutable field net/minecraft/world/level/block/state/BlockBehaviour$Properties dynamicShape Z -accessible method net/minecraft/world/entity/Entity getEncodeId ()Ljava/lang/String; \ No newline at end of file +accessible method net/minecraft/world/entity/Entity getEncodeId ()Ljava/lang/String; +accessible field net/minecraft/server/packs/repository/PackRepository sources Ljava/util/Set; +mutable field net/minecraft/server/packs/repository/PackRepository sources Ljava/util/Set; +accessible field net/minecraft/world/item/DyeColor textureDiffuseColor I \ No newline at end of file diff --git a/forge/src/main/java/me/shedaniel/architectury/hooks/forge/DyeColorHooksImpl.java b/forge/src/main/java/me/shedaniel/architectury/hooks/forge/DyeColorHooksImpl.java new file mode 100644 index 00000000..6c006dbd --- /dev/null +++ b/forge/src/main/java/me/shedaniel/architectury/hooks/forge/DyeColorHooksImpl.java @@ -0,0 +1,27 @@ +/* + * Copyright 2020 shedaniel + * + * 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 + * + * http://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. + */ + +package me.shedaniel.architectury.hooks.forge; + +import me.shedaniel.architectury.hooks.DyeColorHooks; +import net.minecraft.item.DyeColor; + +public class DyeColorHooksImpl implements DyeColorHooks.Impl { + @Override + public int getColorValue(DyeColor dyeColor) { + return dyeColor.getColorValue(); + } +} diff --git a/forge/src/main/java/me/shedaniel/architectury/hooks/forge/PackRepositoryHooksImpl.java b/forge/src/main/java/me/shedaniel/architectury/hooks/forge/PackRepositoryHooksImpl.java new file mode 100644 index 00000000..b24202f6 --- /dev/null +++ b/forge/src/main/java/me/shedaniel/architectury/hooks/forge/PackRepositoryHooksImpl.java @@ -0,0 +1,28 @@ +/* + * Copyright 2020 shedaniel + * + * 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 + * + * http://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. + */ + +package me.shedaniel.architectury.hooks.forge; + +import me.shedaniel.architectury.hooks.PackRepositoryHooks; +import net.minecraft.resources.IPackFinder; +import net.minecraft.resources.ResourcePackList; + +public class PackRepositoryHooksImpl implements PackRepositoryHooks.Impl{ + @Override + public void addSource(ResourcePackList resourcePackList, IPackFinder iPackFinder) { + resourcePackList.addPackFinder(iPackFinder); + } +}