Add PackRepositoryHooks and DyeColorHooks

This commit is contained in:
shedaniel
2020-11-08 18:58:33 +08:00
parent 1a2d921ad0
commit 61fe2fa932
7 changed files with 201 additions and 1 deletions

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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;
}
}

View File

@@ -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<RepositorySource> set = new ArrayList<>(repository.sources);
set.add(source);
repository.sources = ImmutableSet.copyOf(set);
}
}

View File

@@ -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;
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

View File

@@ -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();
}
}

View File

@@ -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);
}
}